#include "03_YunleCAN_A.h"
#include <inttypes.h>

#include "rtwtypes.h"

#include "math.h"

#include "float.h"

#define UNUSED(X) ((void)(X))

#define UNUSED(X) ((void)(X))

real_T rtInf;
real_T rtMinusInf;
real_T rtNaN;
real32_T rtInfF;
real32_T rtMinusInfF;
real32_T rtNaNF;
boolean_T rtIsInf(real_T value)
{
	return (boolean_T)((value == rtInf || value == rtMinusInf) ? 1U : 0U);
}
boolean_T rtIsNaN(real_T value)
{
	return (boolean_T)((value != value) ? 1U : 0U);
}
boolean_T rtIsNaNF(real32_T value)
{
	return (boolean_T)(((value != value) ? 1U : 0U));
}
real_T rt_roundd_snf(real_T u)
{
	real_T y;
	if (fabs(u) < 4.5035996273705E+15)
	{
		y = u >= 0.5 ? floor(u + 0.5) : u > -0.5 ? u * 0.0
												 : ceil(u - 0.5);
	}
	else
	{
		y = u;
	}
	return y;
}
real_T rt_modd_snf(real_T u0, real_T u1)
{
	real_T y;
	boolean_T y_0;
	real_T u;
	boolean_T y_1;
	if (u1 == 0.0)
	{
		y = u0;
	}
	else
	{
		u = u0;
		y_0 = ((!rtIsNaN(u)) && (!rtIsInf(u)));
		u = u1;
		y_1 = ((!rtIsNaN(u)) && (!rtIsInf(u)));
		if (!(y_0 && y_1))
		{
			y = (rtNaN);
		}
		else
		{
			u = u0 / u1;
			if (u1 <= floor(u1))
			{
				y = u0 - floor(u) * u1;
			}
			else if (fabs(u - rt_roundd_snf(u)) <= DBL_EPSILON * fabs(u))
			{
				y = 0.0;
			}
			else
			{
				y = (u - floor(u)) * u1;
			}
		}
	}
	return y;
}
static inline uint64_t reverse_byte_order(uint64_t x)
{
	// x = (x & 0x00000000FFFFFFFF) << 32 | (x & 0xFFFFFFFF00000000) >> 32;
	// x = (x & 0x0000FFFF0000FFFF) << 16 | (x & 0xFFFF0000FFFF0000) >> 16;
	// x = (x & 0x00FF00FF00FF00FF) << 8  | (x & 0xFF00FF00FF00FF00) >> 8;
	return x;
}

int unpack_message(unsigned id, uint64_t data, uint8_t dlc)
{
	switch (id)
	{
	case 0x051:
		return unpack_can_0x051_CCU_Status(&can_0x051_CCU_Status_data, data, dlc);
	case 0x0e0:
		return unpack_can_0x0e0_SAS_SM_input_vcu70(&can_0x0e0_SAS_SM_input_vcu70_data, data, dlc);
	case 0x100:
		return unpack_can_0x100_PadGateWay(&can_0x100_PadGateWay_data, data, dlc);
	case 0x120:
		return unpack_can_0x120_SCU(&can_0x120_SCU_data, data, dlc);
	case 0x144:
		return unpack_can_0x144_EPS_Status(&can_0x144_EPS_Status_data, data, dlc);
	case 0x152:
		return unpack_can_0x152_CCU_SAS_Info(&can_0x152_CCU_SAS_Info_data, data, dlc);
	case 0x154:
		return unpack_can_0x154_CCU_Req(&can_0x154_CCU_Req_data, data, dlc);
	case 0x178:
		return unpack_can_0x178_LHS1_Torque_Feedback(&can_0x178_LHS1_Torque_Feedback_data, data, dlc);
	case 0x188:
		return unpack_can_0x188_RHS1_Torque_Feedback(&can_0x188_RHS1_Torque_Feedback_data, data, dlc);
	case 0x682:
		return unpack_can_0x682_TBOX_Sts(&can_0x682_TBOX_Sts_data, data, dlc);
	case 0x685:
		return unpack_can_0x685_GPS_Sts_1(&can_0x685_GPS_Sts_1_data, data, dlc);
	case 0x686:
		return unpack_can_0x686_GPS_Sts_2(&can_0x686_GPS_Sts_2_data, data, dlc);
	case 0x701:
		return unpack_can_0x701_Hardware_inpute(&can_0x701_Hardware_inpute_data, data, dlc);
	case 0x710:
		return unpack_can_0x710_DebugEn(&can_0x710_DebugEn_data, data, dlc);
	case 0x712:
		return unpack_can_0x712_ChrgASDebug(&can_0x712_ChrgASDebug_data, data, dlc);
	case 0x715:
		return unpack_can_0x715_DrvDebug(&can_0x715_DrvDebug_data, data, dlc);
	default:
		break;
	}
	return -1;
}

int pack_message(unsigned id, uint64_t *data)
{
	switch (id)
	{
	case 0x051:
		return pack_can_0x051_CCU_Status(&can_0x051_CCU_Status_data, data);
	case 0x0e0:
		return pack_can_0x0e0_SAS_SM_input_vcu70(&can_0x0e0_SAS_SM_input_vcu70_data, data);
	case 0x100:
		return pack_can_0x100_PadGateWay(&can_0x100_PadGateWay_data, data);
	case 0x120:
		return pack_can_0x120_SCU(&can_0x120_SCU_data, data);
	case 0x144:
		return pack_can_0x144_EPS_Status(&can_0x144_EPS_Status_data, data);
	case 0x152:
		return pack_can_0x152_CCU_SAS_Info(&can_0x152_CCU_SAS_Info_data, data);
	case 0x154:
		return pack_can_0x154_CCU_Req(&can_0x154_CCU_Req_data, data);
	case 0x178:
		return pack_can_0x178_LHS1_Torque_Feedback(&can_0x178_LHS1_Torque_Feedback_data, data);
	case 0x188:
		return pack_can_0x188_RHS1_Torque_Feedback(&can_0x188_RHS1_Torque_Feedback_data, data);
	case 0x682:
		return pack_can_0x682_TBOX_Sts(&can_0x682_TBOX_Sts_data, data);
	case 0x685:
		return pack_can_0x685_GPS_Sts_1(&can_0x685_GPS_Sts_1_data, data);
	case 0x686:
		return pack_can_0x686_GPS_Sts_2(&can_0x686_GPS_Sts_2_data, data);
	case 0x701:
		return pack_can_0x701_Hardware_inpute(&can_0x701_Hardware_inpute_data, data);
	case 0x710:
		return pack_can_0x710_DebugEn(&can_0x710_DebugEn_data, data);
	case 0x712:
		return pack_can_0x712_ChrgASDebug(&can_0x712_ChrgASDebug_data, data);
	case 0x715:
		return pack_can_0x715_DrvDebug(&can_0x715_DrvDebug_data, data);
	default:
		break;
	}
	return -1;
}

int print_message(unsigned id, FILE *data)
{
	switch (id)
	{
	case 0x051:
		return print_can_0x051_CCU_Status(&can_0x051_CCU_Status_data, data);
	case 0x0e0:
		return print_can_0x0e0_SAS_SM_input_vcu70(&can_0x0e0_SAS_SM_input_vcu70_data, data);
	case 0x100:
		return print_can_0x100_PadGateWay(&can_0x100_PadGateWay_data, data);
	case 0x120:
		return print_can_0x120_SCU(&can_0x120_SCU_data, data);
	case 0x144:
		return print_can_0x144_EPS_Status(&can_0x144_EPS_Status_data, data);
	case 0x152:
		return print_can_0x152_CCU_SAS_Info(&can_0x152_CCU_SAS_Info_data, data);
	case 0x154:
		return print_can_0x154_CCU_Req(&can_0x154_CCU_Req_data, data);
	case 0x178:
		return print_can_0x178_LHS1_Torque_Feedback(&can_0x178_LHS1_Torque_Feedback_data, data);
	case 0x188:
		return print_can_0x188_RHS1_Torque_Feedback(&can_0x188_RHS1_Torque_Feedback_data, data);
	case 0x682:
		return print_can_0x682_TBOX_Sts(&can_0x682_TBOX_Sts_data, data);
	case 0x685:
		return print_can_0x685_GPS_Sts_1(&can_0x685_GPS_Sts_1_data, data);
	case 0x686:
		return print_can_0x686_GPS_Sts_2(&can_0x686_GPS_Sts_2_data, data);
	case 0x701:
		return print_can_0x701_Hardware_inpute(&can_0x701_Hardware_inpute_data, data);
	case 0x710:
		return print_can_0x710_DebugEn(&can_0x710_DebugEn_data, data);
	case 0x712:
		return print_can_0x712_ChrgASDebug(&can_0x712_ChrgASDebug_data, data);
	case 0x715:
		return print_can_0x715_DrvDebug(&can_0x715_DrvDebug_data, data);
	default:
		break;
	}
	return -1;
}

can_0x051_CCU_Status_t can_0x051_CCU_Status_data;

int pack_can_0x051_CCU_Status(can_0x051_CCU_Status_t *pack, uint64_t *data)
{
	register uint64_t x;
	register uint64_t i = 0;
	/* Total_Odometer: start-bit 36, length 20, endianess intel, scaling 0.100000, offset 0.000000 */
	x = ((uint32_t)rt_roundd_snf((pack->Total_Odometer + 0.000000) / 0.100000)) & 0xfffff;
	x <<= 36;
	i |= x;
	/* CCU_Steering_Wheel_Angle: start-bit 8, length 12, endianess intel, scaling 0.100000, offset 0.000000 */
	x = ((uint16_t)rt_roundd_snf((pack->CCU_Steering_Wheel_Angle + 0.000000) / 0.100000)) & 0xfff;
	x <<= 8;
	i |= x;
	/* CCU_Vehicle_Speed: start-bit 20, length 9, endianess intel, scaling 0.100000, offset 0.000000 */
	x = ((uint16_t)rt_roundd_snf((pack->CCU_Vehicle_Speed + 0.000000) / 0.100000)) & 0x1ff;
	x <<= 20;
	i |= x;
	/* CCU_Drive_Mode: start-bit 29, length 3, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->CCU_Drive_Mode + 0.000000) / 1.000000)) & 0x7;
	x <<= 29;
	i |= x;
	/* CCU_ShiftLevel_Sts: start-bit 0, length 2, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->CCU_ShiftLevel_Sts + 0.000000) / 1.000000)) & 0x3;
	i |= x;
	/* CCU_Ignition_Sts: start-bit 3, length 2, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->CCU_Ignition_Sts + 0.000000) / 1.000000)) & 0x3;
	x <<= 3;
	i |= x;
	/* CCU_Brake_Level: start-bit 34, length 2, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->CCU_Brake_Level + 0.000000) / 1.000000)) & 0x3;
	x <<= 34;
	i |= x;
	/* CCU_ACC_Level: start-bit 32, length 2, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->CCU_ACC_Level + 0.000000) / 1.000000)) & 0x3;
	x <<= 32;
	i |= x;
	/* Position_Light_Sts: start-bit 59, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->Position_Light_Sts + 0.000000) / 1.000000)) & 0x1;
	x <<= 59;
	i |= x;
	/* Steering_Wheel_Direction: start-bit 7, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->Steering_Wheel_Direction + 0.000000) / 1.000000)) & 0x1;
	x <<= 7;
	i |= x;
	/* Right_Turn_Light_Sts: start-bit 57, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->Right_Turn_Light_Sts + 0.000000) / 1.000000)) & 0x1;
	x <<= 57;
	i |= x;
	/* RearFog_Sts: start-bit 62, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->RearFog_Sts + 0.000000) / 1.000000)) & 0x1;
	x <<= 62;
	i |= x;
	/* LowBeam_Sts: start-bit 60, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->LowBeam_Sts + 0.000000) / 1.000000)) & 0x1;
	x <<= 60;
	i |= x;
	/* Left_Turn_Light_Sts: start-bit 56, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->Left_Turn_Light_Sts + 0.000000) / 1.000000)) & 0x1;
	x <<= 56;
	i |= x;
	/* Horn_Sts: start-bit 63, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->Horn_Sts + 0.000000) / 1.000000)) & 0x1;
	x <<= 63;
	i |= x;
	/* HighBeam_Sts: start-bit 61, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->HighBeam_Sts + 0.000000) / 1.000000)) & 0x1;
	x <<= 61;
	i |= x;
	/* Hazard_Light_Sts: start-bit 58, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->Hazard_Light_Sts + 0.000000) / 1.000000)) & 0x1;
	x <<= 58;
	i |= x;
	/* CCU_P_Sts: start-bit 2, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->CCU_P_Sts + 0.000000) / 1.000000)) & 0x1;
	x <<= 2;
	i |= x;
	*data = (i);
	return 0;
}

int unpack_can_0x051_CCU_Status(can_0x051_CCU_Status_t *unpack, uint64_t data, uint8_t dlc)
{
	register uint64_t x;
	register uint64_t i = (data);
	if (dlc < 8)
		return -1;
	/* Total_Odometer: start-bit 36, length 20, endianess intel, scaling 0.100000, offset 0.000000 */
	x = (i >> 36) & 0xfffff;
	unpack->Total_Odometer = x * 0.100000 + 0.000000;
	/* CCU_Steering_Wheel_Angle: start-bit 8, length 12, endianess intel, scaling 0.100000, offset 0.000000 */
	x = (i >> 8) & 0xfff;
	unpack->CCU_Steering_Wheel_Angle = x * 0.100000 + 0.000000;
	/* CCU_Vehicle_Speed: start-bit 20, length 9, endianess intel, scaling 0.100000, offset 0.000000 */
	x = (i >> 20) & 0x1ff;
	unpack->CCU_Vehicle_Speed = x * 0.100000 + 0.000000;
	/* CCU_Drive_Mode: start-bit 29, length 3, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 29) & 0x7;
	unpack->CCU_Drive_Mode = x * 1.000000 + 0.000000;
	/* CCU_ShiftLevel_Sts: start-bit 0, length 2, endianess intel, scaling 1.000000, offset 0.000000 */
	x = i & 0x3;
	unpack->CCU_ShiftLevel_Sts = x * 1.000000 + 0.000000;
	/* CCU_Ignition_Sts: start-bit 3, length 2, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 3) & 0x3;
	unpack->CCU_Ignition_Sts = x * 1.000000 + 0.000000;
	/* CCU_Brake_Level: start-bit 34, length 2, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 34) & 0x3;
	unpack->CCU_Brake_Level = x * 1.000000 + 0.000000;
	/* CCU_ACC_Level: start-bit 32, length 2, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 32) & 0x3;
	unpack->CCU_ACC_Level = x * 1.000000 + 0.000000;
	/* Position_Light_Sts: start-bit 59, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 59) & 0x1;
	unpack->Position_Light_Sts = x * 1.000000 + 0.000000;
	/* Steering_Wheel_Direction: start-bit 7, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 7) & 0x1;
	unpack->Steering_Wheel_Direction = x * 1.000000 + 0.000000;
	/* Right_Turn_Light_Sts: start-bit 57, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 57) & 0x1;
	unpack->Right_Turn_Light_Sts = x * 1.000000 + 0.000000;
	/* RearFog_Sts: start-bit 62, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 62) & 0x1;
	unpack->RearFog_Sts = x * 1.000000 + 0.000000;
	/* LowBeam_Sts: start-bit 60, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 60) & 0x1;
	unpack->LowBeam_Sts = x * 1.000000 + 0.000000;
	/* Left_Turn_Light_Sts: start-bit 56, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 56) & 0x1;
	unpack->Left_Turn_Light_Sts = x * 1.000000 + 0.000000;
	/* Horn_Sts: start-bit 63, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 63) & 0x1;
	unpack->Horn_Sts = x * 1.000000 + 0.000000;
	/* HighBeam_Sts: start-bit 61, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 61) & 0x1;
	unpack->HighBeam_Sts = x * 1.000000 + 0.000000;
	/* Hazard_Light_Sts: start-bit 58, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 58) & 0x1;
	unpack->Hazard_Light_Sts = x * 1.000000 + 0.000000;
	/* CCU_P_Sts: start-bit 2, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 2) & 0x1;
	unpack->CCU_P_Sts = x * 1.000000 + 0.000000;
	return 0;
}

int print_can_0x051_CCU_Status(can_0x051_CCU_Status_t *print, FILE *data)
{
	double scaled;
	int r = 0;
	scaled = 0.100;
	r = printf("Total_Odometer = %.3f (wire: %.0f)\n", scaled, (double)(print->Total_Odometer));
	scaled = 0.100;
	r = printf("CCU_Steering_Wheel_Angle = %.3f (wire: %.0f)\n", scaled, (double)(print->CCU_Steering_Wheel_Angle));
	scaled = 0.100;
	r = printf("CCU_Vehicle_Speed = %.3f (wire: %.0f)\n", scaled, (double)(print->CCU_Vehicle_Speed));
	scaled = 1.000;
	r = printf("CCU_Drive_Mode = %.3f (wire: %.0f)\n", scaled, (double)(print->CCU_Drive_Mode));
	scaled = 1.000;
	r = printf("CCU_ShiftLevel_Sts = %.3f (wire: %.0f)\n", scaled, (double)(print->CCU_ShiftLevel_Sts));
	scaled = 1.000;
	r = printf("CCU_Ignition_Sts = %.3f (wire: %.0f)\n", scaled, (double)(print->CCU_Ignition_Sts));
	scaled = 1.000;
	r = printf("CCU_Brake_Level = %.3f (wire: %.0f)\n", scaled, (double)(print->CCU_Brake_Level));
	scaled = 1.000;
	r = printf("CCU_ACC_Level = %.3f (wire: %.0f)\n", scaled, (double)(print->CCU_ACC_Level));
	scaled = 1.000;
	r = printf("Position_Light_Sts = %.3f (wire: %.0f)\n", scaled, (double)(print->Position_Light_Sts));
	scaled = 1.000;
	r = printf("Steering_Wheel_Direction = %.3f (wire: %.0f)\n", scaled, (double)(print->Steering_Wheel_Direction));
	scaled = 1.000;
	r = printf("Right_Turn_Light_Sts = %.3f (wire: %.0f)\n", scaled, (double)(print->Right_Turn_Light_Sts));
	scaled = 1.000;
	r = printf("RearFog_Sts = %.3f (wire: %.0f)\n", scaled, (double)(print->RearFog_Sts));
	scaled = 1.000;
	r = printf("LowBeam_Sts = %.3f (wire: %.0f)\n", scaled, (double)(print->LowBeam_Sts));
	scaled = 1.000;
	r = printf("Left_Turn_Light_Sts = %.3f (wire: %.0f)\n", scaled, (double)(print->Left_Turn_Light_Sts));
	scaled = 1.000;
	r = printf("Horn_Sts = %.3f (wire: %.0f)\n", scaled, (double)(print->Horn_Sts));
	scaled = 1.000;
	r = printf("HighBeam_Sts = %.3f (wire: %.0f)\n", scaled, (double)(print->HighBeam_Sts));
	scaled = 1.000;
	r = printf("Hazard_Light_Sts = %.3f (wire: %.0f)\n", scaled, (double)(print->Hazard_Light_Sts));
	scaled = 1.000;
	r = printf("CCU_P_Sts = %.3f (wire: %.0f)\n", scaled, (double)(print->CCU_P_Sts));
	return r;
}

can_0x0e0_SAS_SM_input_vcu70_t can_0x0e0_SAS_SM_input_vcu70_data;

int pack_can_0x0e0_SAS_SM_input_vcu70(can_0x0e0_SAS_SM_input_vcu70_t *pack, uint64_t *data)
{
	register uint64_t x;
	register uint64_t m = 0;
	register uint64_t i = 0;
	/* SAS_Angle: start-bit 7, length 16, endianess motorola, scaling 0.100000, offset 0.000000 */
	x = ((uint16_t)rt_roundd_snf((pack->SAS_Angle + 0.000000) / 0.100000)) & 0xffff;
	x <<= 48;
	m |= x;
	/* SAS_Angle_Speed: start-bit 16, length 8, endianess intel, scaling 0.100000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->SAS_Angle_Speed + 0.000000) / 0.100000)) & 0xff;
	x <<= 16;
	i |= x;
	/* SAS_Message_Counter: start-bit 32, length 4, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->SAS_Message_Counter + 0.000000) / 1.000000)) & 0xf;
	x <<= 32;
	i |= x;
	/* SAS_Checksum: start-bit 36, length 4, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->SAS_Checksum + 0.000000) / 1.000000)) & 0xf;
	x <<= 36;
	i |= x;
	/* SAS_Trim_Sts: start-bit 29, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->SAS_Trim_Sts + 0.000000) / 1.000000)) & 0x1;
	x <<= 29;
	i |= x;
	/* SAS_Failure_Sts: start-bit 31, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->SAS_Failure_Sts + 0.000000) / 1.000000)) & 0x1;
	x <<= 31;
	i |= x;
	/* SAS_Calibration_Sts: start-bit 30, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->SAS_Calibration_Sts + 0.000000) / 1.000000)) & 0x1;
	x <<= 30;
	i |= x;
	*data = reverse_byte_order(m) | (i);
	return 0;
}

int unpack_can_0x0e0_SAS_SM_input_vcu70(can_0x0e0_SAS_SM_input_vcu70_t *unpack, uint64_t data, uint8_t dlc)
{
	register uint64_t x;
	register uint64_t m = reverse_byte_order(data);
	register uint64_t i = (data);
	if (dlc < 8)
		return -1;
	/* SAS_Angle: start-bit 7, length 16, endianess motorola, scaling 0.100000, offset 0.000000 */
	x = (m >> 48) & 0xffff;
	/* SAS_Angle_Speed: start-bit 16, length 8, endianess intel, scaling 0.100000, offset 0.000000 */
	x = (i >> 16) & 0xff;
	/* SAS_Message_Counter: start-bit 32, length 4, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 32) & 0xf;
	unpack->SAS_Message_Counter = x * 1.000000 + 0.000000;
	/* SAS_Checksum: start-bit 36, length 4, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 36) & 0xf;
	unpack->SAS_Checksum = x * 1.000000 + 0.000000;
	/* SAS_Trim_Sts: start-bit 29, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 29) & 0x1;
	unpack->SAS_Trim_Sts = x * 1.000000 + 0.000000;
	/* SAS_Failure_Sts: start-bit 31, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 31) & 0x1;
	unpack->SAS_Failure_Sts = x * 1.000000 + 0.000000;
	/* SAS_Calibration_Sts: start-bit 30, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 30) & 0x1;
	unpack->SAS_Calibration_Sts = x * 1.000000 + 0.000000;
	return 0;
}

int print_can_0x0e0_SAS_SM_input_vcu70(can_0x0e0_SAS_SM_input_vcu70_t *print, FILE *data)
{
	double scaled;
	int r = 0;
	scaled = 0.100;
	r = printf("SAS_Angle = %.3f (wire: %.0f)\n", scaled, (double)(print->SAS_Angle));
	scaled = 0.100;
	r = printf("SAS_Angle_Speed = %.3f (wire: %.0f)\n", scaled, (double)(print->SAS_Angle_Speed));
	scaled = 1.000;
	r = printf("SAS_Message_Counter = %.3f (wire: %.0f)\n", scaled, (double)(print->SAS_Message_Counter));
	scaled = 1.000;
	r = printf("SAS_Checksum = %.3f (wire: %.0f)\n", scaled, (double)(print->SAS_Checksum));
	scaled = 1.000;
	r = printf("SAS_Trim_Sts = %.3f (wire: %.0f)\n", scaled, (double)(print->SAS_Trim_Sts));
	scaled = 1.000;
	r = printf("SAS_Failure_Sts = %.3f (wire: %.0f)\n", scaled, (double)(print->SAS_Failure_Sts));
	scaled = 1.000;
	r = printf("SAS_Calibration_Sts = %.3f (wire: %.0f)\n", scaled, (double)(print->SAS_Calibration_Sts));
	return r;
}

can_0x100_PadGateWay_t can_0x100_PadGateWay_data;

int pack_can_0x100_PadGateWay(can_0x100_PadGateWay_t *pack, uint64_t *data)
{
	register uint64_t x;
	register uint64_t i = 0;
	/* GW_Steering_Wheel_Angle: start-bit 8, length 16, endianess intel, scaling 0.100000, offset 0.000000 */
	x = ((uint16_t)rt_roundd_snf((pack->GW_Steering_Wheel_Angle + 0.000000) / 0.100000)) & 0xffff;
	x <<= 8;
	i |= x;
	/* GW_Target_Speed: start-bit 40, length 10, endianess intel, scaling 0.100000, offset 0.000000 */
	x = ((uint16_t)rt_roundd_snf((pack->GW_Target_Speed + 0.000000) / 0.100000)) & 0x3ff;
	x <<= 40;
	i |= x;
	/* GW_ShiftLevel_Req: start-bit 0, length 2, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->GW_ShiftLevel_Req + 0.000000) / 1.000000)) & 0x3;
	i |= x;
	/* GW_Right_Turn_Light_Req: start-bit 26, length 2, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->GW_Right_Turn_Light_Req + 0.000000) / 1.000000)) & 0x3;
	x <<= 26;
	i |= x;
	/* GW_RearFogLight_Req: start-bit 36, length 2, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->GW_RearFogLight_Req + 0.000000) / 1.000000)) & 0x3;
	x <<= 36;
	i |= x;
	/* GW_Position_Light_Req: start-bit 30, length 2, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->GW_Position_Light_Req + 0.000000) / 1.000000)) & 0x3;
	x <<= 30;
	i |= x;
	/* GW_LowBeam_Req: start-bit 32, length 2, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->GW_LowBeam_Req + 0.000000) / 1.000000)) & 0x3;
	x <<= 32;
	i |= x;
	/* GW_Left_Turn_Light_Req: start-bit 24, length 2, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->GW_Left_Turn_Light_Req + 0.000000) / 1.000000)) & 0x3;
	x <<= 24;
	i |= x;
	/* GW_Horn_Req: start-bit 38, length 2, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->GW_Horn_Req + 0.000000) / 1.000000)) & 0x3;
	x <<= 38;
	i |= x;
	/* GW_HighBeam_Req: start-bit 34, length 2, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->GW_HighBeam_Req + 0.000000) / 1.000000)) & 0x3;
	x <<= 34;
	i |= x;
	/* GW_Hazard_Light_Req: start-bit 28, length 2, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->GW_Hazard_Light_Req + 0.000000) / 1.000000)) & 0x3;
	x <<= 28;
	i |= x;
	/* GW_Drive_Mode_Req: start-bit 6, length 2, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->GW_Drive_Mode_Req + 0.000000) / 1.000000)) & 0x3;
	x <<= 6;
	i |= x;
	/* GW_Brake_Level: start-bit 4, length 2, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->GW_Brake_Level + 0.000000) / 1.000000)) & 0x3;
	x <<= 4;
	i |= x;
	/* GW_ACC_Level: start-bit 2, length 2, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->GW_ACC_Level + 0.000000) / 1.000000)) & 0x3;
	x <<= 2;
	i |= x;
	/* GW_Ebrake: start-bit 50, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->GW_Ebrake + 0.000000) / 1.000000)) & 0x1;
	x <<= 50;
	i |= x;
	*data = (i);
	return 0;
}

int unpack_can_0x100_PadGateWay(can_0x100_PadGateWay_t *unpack, uint64_t data, uint8_t dlc)
{
	register uint64_t x;
	register uint64_t i = (data);
	if (dlc < 8)
		return -1;
	/* GW_Steering_Wheel_Angle: start-bit 8, length 16, endianess intel, scaling 0.100000, offset 0.000000 */
	x = (i >> 8) & 0xffff;
	/* GW_Target_Speed: start-bit 40, length 10, endianess intel, scaling 0.100000, offset 0.000000 */
	x = (i >> 40) & 0x3ff;
	unpack->GW_Target_Speed = x * 0.100000 + 0.000000;
	/* GW_ShiftLevel_Req: start-bit 0, length 2, endianess intel, scaling 1.000000, offset 0.000000 */
	x = i & 0x3;
	unpack->GW_ShiftLevel_Req = x * 1.000000 + 0.000000;
	/* GW_Right_Turn_Light_Req: start-bit 26, length 2, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 26) & 0x3;
	unpack->GW_Right_Turn_Light_Req = x * 1.000000 + 0.000000;
	/* GW_RearFogLight_Req: start-bit 36, length 2, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 36) & 0x3;
	unpack->GW_RearFogLight_Req = x * 1.000000 + 0.000000;
	/* GW_Position_Light_Req: start-bit 30, length 2, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 30) & 0x3;
	unpack->GW_Position_Light_Req = x * 1.000000 + 0.000000;
	/* GW_LowBeam_Req: start-bit 32, length 2, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 32) & 0x3;
	unpack->GW_LowBeam_Req = x * 1.000000 + 0.000000;
	/* GW_Left_Turn_Light_Req: start-bit 24, length 2, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 24) & 0x3;
	unpack->GW_Left_Turn_Light_Req = x * 1.000000 + 0.000000;
	/* GW_Horn_Req: start-bit 38, length 2, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 38) & 0x3;
	unpack->GW_Horn_Req = x * 1.000000 + 0.000000;
	/* GW_HighBeam_Req: start-bit 34, length 2, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 34) & 0x3;
	unpack->GW_HighBeam_Req = x * 1.000000 + 0.000000;
	/* GW_Hazard_Light_Req: start-bit 28, length 2, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 28) & 0x3;
	unpack->GW_Hazard_Light_Req = x * 1.000000 + 0.000000;
	/* GW_Drive_Mode_Req: start-bit 6, length 2, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 6) & 0x3;
	unpack->GW_Drive_Mode_Req = x * 1.000000 + 0.000000;
	/* GW_Brake_Level: start-bit 4, length 2, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 4) & 0x3;
	unpack->GW_Brake_Level = x * 1.000000 + 0.000000;
	/* GW_ACC_Level: start-bit 2, length 2, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 2) & 0x3;
	unpack->GW_ACC_Level = x * 1.000000 + 0.000000;
	/* GW_Ebrake: start-bit 50, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 50) & 0x1;
	unpack->GW_Ebrake = x * 1.000000 + 0.000000;
	return 0;
}

int print_can_0x100_PadGateWay(can_0x100_PadGateWay_t *print, FILE *data)
{
	double scaled;
	int r = 0;
	scaled = 0.100;
	r = printf("GW_Steering_Wheel_Angle = %.3f (wire: %.0f)\n", scaled, (double)(print->GW_Steering_Wheel_Angle));
	scaled = 0.100;
	r = printf("GW_Target_Speed = %.3f (wire: %.0f)\n", scaled, (double)(print->GW_Target_Speed));
	scaled = 1.000;
	r = printf("GW_ShiftLevel_Req = %.3f (wire: %.0f)\n", scaled, (double)(print->GW_ShiftLevel_Req));
	scaled = 1.000;
	r = printf("GW_Right_Turn_Light_Req = %.3f (wire: %.0f)\n", scaled, (double)(print->GW_Right_Turn_Light_Req));
	scaled = 1.000;
	r = printf("GW_RearFogLight_Req = %.3f (wire: %.0f)\n", scaled, (double)(print->GW_RearFogLight_Req));
	scaled = 1.000;
	r = printf("GW_Position_Light_Req = %.3f (wire: %.0f)\n", scaled, (double)(print->GW_Position_Light_Req));
	scaled = 1.000;
	r = printf("GW_LowBeam_Req = %.3f (wire: %.0f)\n", scaled, (double)(print->GW_LowBeam_Req));
	scaled = 1.000;
	r = printf("GW_Left_Turn_Light_Req = %.3f (wire: %.0f)\n", scaled, (double)(print->GW_Left_Turn_Light_Req));
	scaled = 1.000;
	r = printf("GW_Horn_Req = %.3f (wire: %.0f)\n", scaled, (double)(print->GW_Horn_Req));
	scaled = 1.000;
	r = printf("GW_HighBeam_Req = %.3f (wire: %.0f)\n", scaled, (double)(print->GW_HighBeam_Req));
	scaled = 1.000;
	r = printf("GW_Hazard_Light_Req = %.3f (wire: %.0f)\n", scaled, (double)(print->GW_Hazard_Light_Req));
	scaled = 1.000;
	r = printf("GW_Drive_Mode_Req = %.3f (wire: %.0f)\n", scaled, (double)(print->GW_Drive_Mode_Req));
	scaled = 1.000;
	r = printf("GW_Brake_Level = %.3f (wire: %.0f)\n", scaled, (double)(print->GW_Brake_Level));
	scaled = 1.000;
	r = printf("GW_ACC_Level = %.3f (wire: %.0f)\n", scaled, (double)(print->GW_ACC_Level));
	scaled = 1.000;
	r = printf("GW_Ebrake = %.3f (wire: %.0f)\n", scaled, (double)(print->GW_Ebrake));
	return r;
}

can_0x120_SCU_t can_0x120_SCU_data;

int pack_can_0x120_SCU(can_0x120_SCU_t *pack, uint64_t *data)
{
	register uint64_t x;
	register uint64_t i = 0;
	/* SCU_Steering_Wheel_Angle: start-bit 8, length 16, endianess intel, scaling 0.100000, offset 0.000000 */
	x = ((uint16_t)rt_roundd_snf((pack->SCU_Steering_Wheel_Angle + 0.000000) / 0.100000)) & 0xffff;
	x <<= 8;
	i |= x;
	/* SCU_Target_Speed: start-bit 24, length 9, endianess intel, scaling 0.100000, offset 0.000000 */
	x = ((uint16_t)rt_roundd_snf((pack->SCU_Target_Speed + 0.000000) / 0.100000)) & 0x1ff;
	x <<= 24;
	i |= x;
	/* GW_Horn_Req: start-bit 54, length 2, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->GW_Horn_Req + 0.000000) / 1.000000)) & 0x3;
	x <<= 54;
	i |= x;
	/* GW_RearFogLight_Req: start-bit 52, length 2, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->GW_RearFogLight_Req + 0.000000) / 1.000000)) & 0x3;
	x <<= 52;
	i |= x;
	/* GW_HighBeam_Req: start-bit 50, length 2, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->GW_HighBeam_Req + 0.000000) / 1.000000)) & 0x3;
	x <<= 50;
	i |= x;
	/* GW_LowBeam_Req: start-bit 48, length 2, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->GW_LowBeam_Req + 0.000000) / 1.000000)) & 0x3;
	x <<= 48;
	i |= x;
	/* GW_Position_Light_Req: start-bit 46, length 2, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->GW_Position_Light_Req + 0.000000) / 1.000000)) & 0x3;
	x <<= 46;
	i |= x;
	/* GW_Hazard_Light_Req: start-bit 44, length 2, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->GW_Hazard_Light_Req + 0.000000) / 1.000000)) & 0x3;
	x <<= 44;
	i |= x;
	/* GW_Right_Turn_Light_Req: start-bit 42, length 2, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->GW_Right_Turn_Light_Req + 0.000000) / 1.000000)) & 0x3;
	x <<= 42;
	i |= x;
	/* GW_Left_Turn_Light_Req: start-bit 40, length 2, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->GW_Left_Turn_Light_Req + 0.000000) / 1.000000)) & 0x3;
	x <<= 40;
	i |= x;
	/* SCU_ShiftLevel_Req: start-bit 0, length 2, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->SCU_ShiftLevel_Req + 0.000000) / 1.000000)) & 0x3;
	i |= x;
	/* SCU_Drive_Mode_Req: start-bit 6, length 2, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->SCU_Drive_Mode_Req + 0.000000) / 1.000000)) & 0x3;
	x <<= 6;
	i |= x;
	/* SCU_Brake_Mode: start-bit 4, length 2, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->SCU_Brake_Mode + 0.000000) / 1.000000)) & 0x3;
	x <<= 4;
	i |= x;
	/* SCU_ACC_Mode: start-bit 2, length 2, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->SCU_ACC_Mode + 0.000000) / 1.000000)) & 0x3;
	x <<= 2;
	i |= x;
	/* SCU_Brk_En: start-bit 33, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->SCU_Brk_En + 0.000000) / 1.000000)) & 0x1;
	x <<= 33;
	i |= x;
	*data = (i);
	return 0;
}

int unpack_can_0x120_SCU(can_0x120_SCU_t *unpack, uint64_t data, uint8_t dlc)
{
	register uint64_t x;
	register uint64_t i = (data);
	if (dlc < 8)
		return -1;
	/* SCU_Steering_Wheel_Angle: start-bit 8, length 16, endianess intel, scaling 0.100000, offset 0.000000 */
	x = (i >> 8) & 0xffff;
	/* SCU_Target_Speed: start-bit 24, length 9, endianess intel, scaling 0.100000, offset 0.000000 */
	x = (i >> 24) & 0x1ff;
	unpack->SCU_Target_Speed = x * 0.100000 + 0.000000;
	/* GW_Horn_Req: start-bit 54, length 2, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 54) & 0x3;
	unpack->GW_Horn_Req = x * 1.000000 + 0.000000;
	/* GW_RearFogLight_Req: start-bit 52, length 2, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 52) & 0x3;
	unpack->GW_RearFogLight_Req = x * 1.000000 + 0.000000;
	/* GW_HighBeam_Req: start-bit 50, length 2, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 50) & 0x3;
	unpack->GW_HighBeam_Req = x * 1.000000 + 0.000000;
	/* GW_LowBeam_Req: start-bit 48, length 2, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 48) & 0x3;
	unpack->GW_LowBeam_Req = x * 1.000000 + 0.000000;
	/* GW_Position_Light_Req: start-bit 46, length 2, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 46) & 0x3;
	unpack->GW_Position_Light_Req = x * 1.000000 + 0.000000;
	/* GW_Hazard_Light_Req: start-bit 44, length 2, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 44) & 0x3;
	unpack->GW_Hazard_Light_Req = x * 1.000000 + 0.000000;
	/* GW_Right_Turn_Light_Req: start-bit 42, length 2, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 42) & 0x3;
	unpack->GW_Right_Turn_Light_Req = x * 1.000000 + 0.000000;
	/* GW_Left_Turn_Light_Req: start-bit 40, length 2, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 40) & 0x3;
	unpack->GW_Left_Turn_Light_Req = x * 1.000000 + 0.000000;
	/* SCU_ShiftLevel_Req: start-bit 0, length 2, endianess intel, scaling 1.000000, offset 0.000000 */
	x = i & 0x3;
	unpack->SCU_ShiftLevel_Req = x * 1.000000 + 0.000000;
	/* SCU_Drive_Mode_Req: start-bit 6, length 2, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 6) & 0x3;
	unpack->SCU_Drive_Mode_Req = x * 1.000000 + 0.000000;
	/* SCU_Brake_Mode: start-bit 4, length 2, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 4) & 0x3;
	unpack->SCU_Brake_Mode = x * 1.000000 + 0.000000;
	/* SCU_ACC_Mode: start-bit 2, length 2, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 2) & 0x3;
	unpack->SCU_ACC_Mode = x * 1.000000 + 0.000000;
	/* SCU_Brk_En: start-bit 33, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 33) & 0x1;
	unpack->SCU_Brk_En = x * 1.000000 + 0.000000;
	return 0;
}

int print_can_0x120_SCU(can_0x120_SCU_t *print, FILE *data)
{
	double scaled;
	int r = 0;
	scaled = 0.100;
	r = printf("SCU_Steering_Wheel_Angle = %.3f (wire: %.0f)\n", scaled, (double)(print->SCU_Steering_Wheel_Angle));
	scaled = 0.100;
	r = printf("SCU_Target_Speed = %.3f (wire: %.0f)\n", scaled, (double)(print->SCU_Target_Speed));
	scaled = 1.000;
	r = printf("GW_Horn_Req = %.3f (wire: %.0f)\n", scaled, (double)(print->GW_Horn_Req));
	scaled = 1.000;
	r = printf("GW_RearFogLight_Req = %.3f (wire: %.0f)\n", scaled, (double)(print->GW_RearFogLight_Req));
	scaled = 1.000;
	r = printf("GW_HighBeam_Req = %.3f (wire: %.0f)\n", scaled, (double)(print->GW_HighBeam_Req));
	scaled = 1.000;
	r = printf("GW_LowBeam_Req = %.3f (wire: %.0f)\n", scaled, (double)(print->GW_LowBeam_Req));
	scaled = 1.000;
	r = printf("GW_Position_Light_Req = %.3f (wire: %.0f)\n", scaled, (double)(print->GW_Position_Light_Req));
	scaled = 1.000;
	r = printf("GW_Hazard_Light_Req = %.3f (wire: %.0f)\n", scaled, (double)(print->GW_Hazard_Light_Req));
	scaled = 1.000;
	r = printf("GW_Right_Turn_Light_Req = %.3f (wire: %.0f)\n", scaled, (double)(print->GW_Right_Turn_Light_Req));
	scaled = 1.000;
	r = printf("GW_Left_Turn_Light_Req = %.3f (wire: %.0f)\n", scaled, (double)(print->GW_Left_Turn_Light_Req));
	scaled = 1.000;
	r = printf("SCU_ShiftLevel_Req = %.3f (wire: %.0f)\n", scaled, (double)(print->SCU_ShiftLevel_Req));
	scaled = 1.000;
	r = printf("SCU_Drive_Mode_Req = %.3f (wire: %.0f)\n", scaled, (double)(print->SCU_Drive_Mode_Req));
	scaled = 1.000;
	r = printf("SCU_Brake_Mode = %.3f (wire: %.0f)\n", scaled, (double)(print->SCU_Brake_Mode));
	scaled = 1.000;
	r = printf("SCU_ACC_Mode = %.3f (wire: %.0f)\n", scaled, (double)(print->SCU_ACC_Mode));
	scaled = 1.000;
	r = printf("SCU_Brk_En = %.3f (wire: %.0f)\n", scaled, (double)(print->SCU_Brk_En));
	return r;
}

can_0x144_EPS_Status_t can_0x144_EPS_Status_data;

int pack_can_0x144_EPS_Status(can_0x144_EPS_Status_t *pack, uint64_t *data)
{
	register uint64_t x;
	register uint64_t i = 0;
	/* EPS_Angle: start-bit 0, length 16, endianess intel, scaling 0.100000, offset 0.000000 */
	x = ((uint16_t)rt_roundd_snf((pack->EPS_Angle + 0.000000) / 0.100000)) & 0xffff;
	i |= x;
	/* EPS_Fault_Code: start-bit 24, length 16, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint16_t)rt_roundd_snf((pack->EPS_Fault_Code + 0.000000) / 1.000000)) & 0xffff;
	x <<= 24;
	i |= x;
	/* EPS_System_Status: start-bit 16, length 2, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->EPS_System_Status + 0.000000) / 1.000000)) & 0x3;
	x <<= 16;
	i |= x;
	*data = (i);
	return 0;
}

int unpack_can_0x144_EPS_Status(can_0x144_EPS_Status_t *unpack, uint64_t data, uint8_t dlc)
{
	register uint64_t x;
	register uint64_t i = (data);
	if (dlc < 8)
		return -1;
	/* EPS_Angle: start-bit 0, length 16, endianess intel, scaling 0.100000, offset 0.000000 */
	x = i & 0xffff;
	/* EPS_Fault_Code: start-bit 24, length 16, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 24) & 0xffff;
	unpack->EPS_Fault_Code = x * 1.000000 + 0.000000;
	/* EPS_System_Status: start-bit 16, length 2, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 16) & 0x3;
	unpack->EPS_System_Status = x * 1.000000 + 0.000000;
	return 0;
}

int print_can_0x144_EPS_Status(can_0x144_EPS_Status_t *print, FILE *data)
{
	double scaled;
	int r = 0;
	scaled = 0.100;
	r = printf("EPS_Angle = %.3f (wire: %.0f)\n", scaled, (double)(print->EPS_Angle));
	scaled = 1.000;
	r = printf("EPS_Fault_Code = %.3f (wire: %.0f)\n", scaled, (double)(print->EPS_Fault_Code));
	scaled = 1.000;
	r = printf("EPS_System_Status = %.3f (wire: %.0f)\n", scaled, (double)(print->EPS_System_Status));
	return r;
}

can_0x152_CCU_SAS_Info_t can_0x152_CCU_SAS_Info_data;

int pack_can_0x152_CCU_SAS_Info(can_0x152_CCU_SAS_Info_t *pack, uint64_t *data)
{
	register uint64_t x;
	register uint64_t i = 0;
	/* SAS_Angle: start-bit 0, length 16, endianess intel, scaling 0.100000, offset 0.000000 */
	x = ((uint16_t)rt_roundd_snf((pack->SAS_Angle + 0.000000) / 0.100000)) & 0xffff;
	i |= x;
	/* SAS_Angle_Speed: start-bit 16, length 8, endianess intel, scaling 0.100000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->SAS_Angle_Speed + 0.000000) / 0.100000)) & 0xff;
	x <<= 16;
	i |= x;
	/* SAS_Message_Counter: start-bit 32, length 4, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->SAS_Message_Counter + 0.000000) / 1.000000)) & 0xf;
	x <<= 32;
	i |= x;
	/* SAS_Checksum: start-bit 36, length 4, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->SAS_Checksum + 0.000000) / 1.000000)) & 0xf;
	x <<= 36;
	i |= x;
	/* SAS_Trim_Sts: start-bit 26, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->SAS_Trim_Sts + 0.000000) / 1.000000)) & 0x1;
	x <<= 26;
	i |= x;
	/* SAS_Failure_Sts: start-bit 24, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->SAS_Failure_Sts + 0.000000) / 1.000000)) & 0x1;
	x <<= 24;
	i |= x;
	/* SAS_Calibration_Sts: start-bit 25, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->SAS_Calibration_Sts + 0.000000) / 1.000000)) & 0x1;
	x <<= 25;
	i |= x;
	*data = (i);
	return 0;
}

int unpack_can_0x152_CCU_SAS_Info(can_0x152_CCU_SAS_Info_t *unpack, uint64_t data, uint8_t dlc)
{
	register uint64_t x;
	register uint64_t i = (data);
	if (dlc < 8)
		return -1;
	/* SAS_Angle: start-bit 0, length 16, endianess intel, scaling 0.100000, offset 0.000000 */
	x = i & 0xffff;
	/* SAS_Angle_Speed: start-bit 16, length 8, endianess intel, scaling 0.100000, offset 0.000000 */
	x = (i >> 16) & 0xff;
	/* SAS_Message_Counter: start-bit 32, length 4, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 32) & 0xf;
	unpack->SAS_Message_Counter = x * 1.000000 + 0.000000;
	/* SAS_Checksum: start-bit 36, length 4, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 36) & 0xf;
	unpack->SAS_Checksum = x * 1.000000 + 0.000000;
	/* SAS_Trim_Sts: start-bit 26, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 26) & 0x1;
	unpack->SAS_Trim_Sts = x * 1.000000 + 0.000000;
	/* SAS_Failure_Sts: start-bit 24, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 24) & 0x1;
	unpack->SAS_Failure_Sts = x * 1.000000 + 0.000000;
	/* SAS_Calibration_Sts: start-bit 25, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 25) & 0x1;
	unpack->SAS_Calibration_Sts = x * 1.000000 + 0.000000;
	return 0;
}

int print_can_0x152_CCU_SAS_Info(can_0x152_CCU_SAS_Info_t *print, FILE *data)
{
	double scaled;
	int r = 0;
	scaled = 0.100;
	r = printf("SAS_Angle = %.3f (wire: %.0f)\n", scaled, (double)(print->SAS_Angle));
	scaled = 0.100;
	r = printf("SAS_Angle_Speed = %.3f (wire: %.0f)\n", scaled, (double)(print->SAS_Angle_Speed));
	scaled = 1.000;
	r = printf("SAS_Message_Counter = %.3f (wire: %.0f)\n", scaled, (double)(print->SAS_Message_Counter));
	scaled = 1.000;
	r = printf("SAS_Checksum = %.3f (wire: %.0f)\n", scaled, (double)(print->SAS_Checksum));
	scaled = 1.000;
	r = printf("SAS_Trim_Sts = %.3f (wire: %.0f)\n", scaled, (double)(print->SAS_Trim_Sts));
	scaled = 1.000;
	r = printf("SAS_Failure_Sts = %.3f (wire: %.0f)\n", scaled, (double)(print->SAS_Failure_Sts));
	scaled = 1.000;
	r = printf("SAS_Calibration_Sts = %.3f (wire: %.0f)\n", scaled, (double)(print->SAS_Calibration_Sts));
	return r;
}

can_0x154_CCU_Req_t can_0x154_CCU_Req_data;

int pack_can_0x154_CCU_Req(can_0x154_CCU_Req_t *pack, uint64_t *data)
{
	register uint64_t x;
	register uint64_t i = 0;
	/* CCU_Break_Pressure_Req: start-bit 40, length 16, endianess intel, scaling 0.010000, offset 0.000000 */
	x = ((uint16_t)rt_roundd_snf((pack->CCU_Break_Pressure_Req + 0.000000) / 0.010000)) & 0xffff;
	x <<= 40;
	i |= x;
	/* CCU_IBC_HP_pressure: start-bit 24, length 16, endianess intel, scaling 0.010000, offset 0.000000 */
	x = ((uint16_t)rt_roundd_snf((pack->CCU_IBC_HP_pressure + 0.000000) / 0.010000)) & 0xffff;
	x <<= 24;
	i |= x;
	/* CCU_Torque_Req: start-bit 0, length 16, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint16_t)rt_roundd_snf((pack->CCU_Torque_Req + 0.000000) / 1.000000)) & 0xffff;
	i |= x;
	/* CCU_Break_Pressure_Req_Val_ATM: start-bit 17, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->CCU_Break_Pressure_Req_Val_ATM + 0.000000) / 1.000000)) & 0x1;
	x <<= 17;
	i |= x;
	/* CCU_Break_Pressure_Req_Val: start-bit 56, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->CCU_Break_Pressure_Req_Val + 0.000000) / 1.000000)) & 0x1;
	x <<= 56;
	i |= x;
	/* CCU_Torque_Req_Invaild: start-bit 16, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->CCU_Torque_Req_Invaild + 0.000000) / 1.000000)) & 0x1;
	x <<= 16;
	i |= x;
	*data = (i);
	return 0;
}

int unpack_can_0x154_CCU_Req(can_0x154_CCU_Req_t *unpack, uint64_t data, uint8_t dlc)
{
	register uint64_t x;
	register uint64_t i = (data);
	if (dlc < 8)
		return -1;
	/* CCU_Break_Pressure_Req: start-bit 40, length 16, endianess intel, scaling 0.010000, offset 0.000000 */
	x = (i >> 40) & 0xffff;
	unpack->CCU_Break_Pressure_Req = x * 0.010000 + 0.000000;
	/* CCU_IBC_HP_pressure: start-bit 24, length 16, endianess intel, scaling 0.010000, offset 0.000000 */
	x = (i >> 24) & 0xffff;
	unpack->CCU_IBC_HP_pressure = x * 0.010000 + 0.000000;
	/* CCU_Torque_Req: start-bit 0, length 16, endianess intel, scaling 1.000000, offset 0.000000 */
	x = i & 0xffff;
	unpack->CCU_Torque_Req = x * 1.000000 + 0.000000;
	/* CCU_Break_Pressure_Req_Val_ATM: start-bit 17, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 17) & 0x1;
	unpack->CCU_Break_Pressure_Req_Val_ATM = x * 1.000000 + 0.000000;
	/* CCU_Break_Pressure_Req_Val: start-bit 56, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 56) & 0x1;
	unpack->CCU_Break_Pressure_Req_Val = x * 1.000000 + 0.000000;
	/* CCU_Torque_Req_Invaild: start-bit 16, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 16) & 0x1;
	unpack->CCU_Torque_Req_Invaild = x * 1.000000 + 0.000000;
	return 0;
}

int print_can_0x154_CCU_Req(can_0x154_CCU_Req_t *print, FILE *data)
{
	double scaled;
	int r = 0;
	scaled = 0.010;
	r = printf("CCU_Break_Pressure_Req = %.3f (wire: %.0f)\n", scaled, (double)(print->CCU_Break_Pressure_Req));
	scaled = 0.010;
	r = printf("CCU_IBC_HP_pressure = %.3f (wire: %.0f)\n", scaled, (double)(print->CCU_IBC_HP_pressure));
	scaled = 1.000;
	r = printf("CCU_Torque_Req = %.3f (wire: %.0f)\n", scaled, (double)(print->CCU_Torque_Req));
	scaled = 1.000;
	r = printf("CCU_Break_Pressure_Req_Val_ATM = %.3f (wire: %.0f)\n", scaled, (double)(print->CCU_Break_Pressure_Req_Val_ATM));
	scaled = 1.000;
	r = printf("CCU_Break_Pressure_Req_Val = %.3f (wire: %.0f)\n", scaled, (double)(print->CCU_Break_Pressure_Req_Val));
	scaled = 1.000;
	r = printf("CCU_Torque_Req_Invaild = %.3f (wire: %.0f)\n", scaled, (double)(print->CCU_Torque_Req_Invaild));
	return r;
}

can_0x178_LHS1_Torque_Feedback_t can_0x178_LHS1_Torque_Feedback_data;

int pack_can_0x178_LHS1_Torque_Feedback(can_0x178_LHS1_Torque_Feedback_t *pack, uint64_t *data)
{
	register uint64_t x;
	register uint64_t i = 0;
	/* DC_Link_Current: start-bit 32, length 16, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint16_t)rt_roundd_snf((pack->DC_Link_Current + 0.000000) / 1.000000)) & 0xffff;
	x <<= 32;
	i |= x;
	/* Speed_Measured: start-bit 16, length 16, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint16_t)rt_roundd_snf((pack->Speed_Measured + 0.000000) / 1.000000)) & 0xffff;
	x <<= 16;
	i |= x;
	/* Torque_Measured: start-bit 0, length 16, endianess intel, scaling 0.062500, offset 0.000000 */
	x = ((uint16_t)rt_roundd_snf((pack->Torque_Measured + 0.000000) / 0.062500)) & 0xffff;
	i |= x;
	/* CS_Torque: start-bit 56, length 8, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->CS_Torque + 0.000000) / 1.000000)) & 0xff;
	x <<= 56;
	i |= x;
	/* SEQ_Torque: start-bit 48, length 8, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->SEQ_Torque + 0.000000) / 1.000000)) & 0xff;
	x <<= 48;
	i |= x;
	*data = (i);
	return 0;
}

int unpack_can_0x178_LHS1_Torque_Feedback(can_0x178_LHS1_Torque_Feedback_t *unpack, uint64_t data, uint8_t dlc)
{
	register uint64_t x;
	register uint64_t i = (data);
	if (dlc < 8)
		return -1;
	/* DC_Link_Current: start-bit 32, length 16, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 32) & 0xffff;
	/* Speed_Measured: start-bit 16, length 16, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 16) & 0xffff;
	/* Torque_Measured: start-bit 0, length 16, endianess intel, scaling 0.062500, offset 0.000000 */
	x = i & 0xffff;
	/* CS_Torque: start-bit 56, length 8, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 56) & 0xff;
	unpack->CS_Torque = x * 1.000000 + 0.000000;
	/* SEQ_Torque: start-bit 48, length 8, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 48) & 0xff;
	unpack->SEQ_Torque = x * 1.000000 + 0.000000;
	return 0;
}

int print_can_0x178_LHS1_Torque_Feedback(can_0x178_LHS1_Torque_Feedback_t *print, FILE *data)
{
	double scaled;
	int r = 0;
	scaled = 1.000;
	r = printf("DC_Link_Current = %.3f (wire: %.0f)\n", scaled, (double)(print->DC_Link_Current));
	scaled = 1.000;
	r = printf("Speed_Measured = %.3f (wire: %.0f)\n", scaled, (double)(print->Speed_Measured));
	scaled = 0.062;
	r = printf("Torque_Measured = %.3f (wire: %.0f)\n", scaled, (double)(print->Torque_Measured));
	scaled = 1.000;
	r = printf("CS_Torque = %.3f (wire: %.0f)\n", scaled, (double)(print->CS_Torque));
	scaled = 1.000;
	r = printf("SEQ_Torque = %.3f (wire: %.0f)\n", scaled, (double)(print->SEQ_Torque));
	return r;
}

can_0x188_RHS1_Torque_Feedback_t can_0x188_RHS1_Torque_Feedback_data;

int pack_can_0x188_RHS1_Torque_Feedback(can_0x188_RHS1_Torque_Feedback_t *pack, uint64_t *data)
{
	register uint64_t x;
	register uint64_t i = 0;
	/* DC_Link_Current: start-bit 32, length 16, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint16_t)rt_roundd_snf((pack->DC_Link_Current + 0.000000) / 1.000000)) & 0xffff;
	x <<= 32;
	i |= x;
	/* Speed_Measured: start-bit 16, length 16, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint16_t)rt_roundd_snf((pack->Speed_Measured + 0.000000) / 1.000000)) & 0xffff;
	x <<= 16;
	i |= x;
	/* Torque_Measured: start-bit 0, length 16, endianess intel, scaling 0.062500, offset 0.000000 */
	x = ((uint16_t)rt_roundd_snf((pack->Torque_Measured + 0.000000) / 0.062500)) & 0xffff;
	i |= x;
	/* CS_Torque: start-bit 56, length 8, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->CS_Torque + 0.000000) / 1.000000)) & 0xff;
	x <<= 56;
	i |= x;
	/* SEQ_Torque: start-bit 48, length 8, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->SEQ_Torque + 0.000000) / 1.000000)) & 0xff;
	x <<= 48;
	i |= x;
	*data = (i);
	return 0;
}

int unpack_can_0x188_RHS1_Torque_Feedback(can_0x188_RHS1_Torque_Feedback_t *unpack, uint64_t data, uint8_t dlc)
{
	register uint64_t x;
	register uint64_t i = (data);
	if (dlc < 8)
		return -1;
	/* DC_Link_Current: start-bit 32, length 16, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 32) & 0xffff;
	/* Speed_Measured: start-bit 16, length 16, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 16) & 0xffff;
	/* Torque_Measured: start-bit 0, length 16, endianess intel, scaling 0.062500, offset 0.000000 */
	x = i & 0xffff;
	/* CS_Torque: start-bit 56, length 8, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 56) & 0xff;
	unpack->CS_Torque = x * 1.000000 + 0.000000;
	/* SEQ_Torque: start-bit 48, length 8, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 48) & 0xff;
	unpack->SEQ_Torque = x * 1.000000 + 0.000000;
	return 0;
}

int print_can_0x188_RHS1_Torque_Feedback(can_0x188_RHS1_Torque_Feedback_t *print, FILE *data)
{
	double scaled;
	int r = 0;
	scaled = 1.000;
	r = printf("DC_Link_Current = %.3f (wire: %.0f)\n", scaled, (double)(print->DC_Link_Current));
	scaled = 1.000;
	r = printf("Speed_Measured = %.3f (wire: %.0f)\n", scaled, (double)(print->Speed_Measured));
	scaled = 0.062;
	r = printf("Torque_Measured = %.3f (wire: %.0f)\n", scaled, (double)(print->Torque_Measured));
	scaled = 1.000;
	r = printf("CS_Torque = %.3f (wire: %.0f)\n", scaled, (double)(print->CS_Torque));
	scaled = 1.000;
	r = printf("SEQ_Torque = %.3f (wire: %.0f)\n", scaled, (double)(print->SEQ_Torque));
	return r;
}

can_0x682_TBOX_Sts_t can_0x682_TBOX_Sts_data;

int pack_can_0x682_TBOX_Sts(can_0x682_TBOX_Sts_t *pack, uint64_t *data)
{
	register uint64_t x;
	register uint64_t i = 0;
	/* TBOXI_Checksum: start-bit 56, length 8, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->TBOXI_Checksum + 0.000000) / 1.000000)) & 0xff;
	x <<= 56;
	i |= x;
	/* TBOX_WIFI_Signal_Level: start-bit 16, length 8, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->TBOX_WIFI_Signal_Level + 0.000000) / 1.000000)) & 0xff;
	x <<= 16;
	i |= x;
	/* TBOX_BlueTooth_Signal_Level: start-bit 24, length 8, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->TBOX_BlueTooth_Signal_Level + 0.000000) / 1.000000)) & 0xff;
	x <<= 24;
	i |= x;
	/* TBOX_4G_Signal_Level: start-bit 8, length 8, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->TBOX_4G_Signal_Level + 0.000000) / 1.000000)) & 0xff;
	x <<= 8;
	i |= x;
	/* TBOX_WIFIAP_Work_Status: start-bit 3, length 2, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->TBOX_WIFIAP_Work_Status + 0.000000) / 1.000000)) & 0x3;
	x <<= 3;
	i |= x;
	/* TBOX_Ignition_Sts: start-bit 0, length 2, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->TBOX_Ignition_Sts + 0.000000) / 1.000000)) & 0x3;
	i |= x;
	/* TBOX_ICAN_Data_Link_Status: start-bit 40, length 2, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->TBOX_ICAN_Data_Link_Status + 0.000000) / 1.000000)) & 0x3;
	x <<= 40;
	i |= x;
	/* TBOX_BlueTooth_work_Status: start-bit 5, length 2, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->TBOX_BlueTooth_work_Status + 0.000000) / 1.000000)) & 0x3;
	x <<= 5;
	i |= x;
	/* TBOX_General_Fail_Status: start-bit 2, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->TBOX_General_Fail_Status + 0.000000) / 1.000000)) & 0x1;
	x <<= 2;
	i |= x;
	/* TBOX_ExtLamp_Controller_Status: start-bit 46, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->TBOX_ExtLamp_Controller_Status + 0.000000) / 1.000000)) & 0x1;
	x <<= 46;
	i |= x;
	/* TBOX_Door_Controller_Status: start-bit 47, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->TBOX_Door_Controller_Status + 0.000000) / 1.000000)) & 0x1;
	x <<= 47;
	i |= x;
	/* TBOX_Cloud_Mirror_Status: start-bit 44, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->TBOX_Cloud_Mirror_Status + 0.000000) / 1.000000)) & 0x1;
	x <<= 44;
	i |= x;
	/* TBOX_Cameral_Controller_Status: start-bit 45, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->TBOX_Cameral_Controller_Status + 0.000000) / 1.000000)) & 0x1;
	x <<= 45;
	i |= x;
	/* TBOX_AirCondition_Status: start-bit 42, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->TBOX_AirCondition_Status + 0.000000) / 1.000000)) & 0x1;
	x <<= 42;
	i |= x;
	/* TBOX_AirCleaner_Status: start-bit 43, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->TBOX_AirCleaner_Status + 0.000000) / 1.000000)) & 0x1;
	x <<= 43;
	i |= x;
	/* TBOX_4G_Work_Status: start-bit 7, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->TBOX_4G_Work_Status + 0.000000) / 1.000000)) & 0x1;
	x <<= 7;
	i |= x;
	*data = (i);
	return 0;
}

int unpack_can_0x682_TBOX_Sts(can_0x682_TBOX_Sts_t *unpack, uint64_t data, uint8_t dlc)
{
	register uint64_t x;
	register uint64_t i = (data);
	if (dlc < 8)
		return -1;
	/* TBOXI_Checksum: start-bit 56, length 8, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 56) & 0xff;
	unpack->TBOXI_Checksum = x * 1.000000 + 0.000000;
	/* TBOX_WIFI_Signal_Level: start-bit 16, length 8, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 16) & 0xff;
	unpack->TBOX_WIFI_Signal_Level = x * 1.000000 + 0.000000;
	/* TBOX_BlueTooth_Signal_Level: start-bit 24, length 8, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 24) & 0xff;
	unpack->TBOX_BlueTooth_Signal_Level = x * 1.000000 + 0.000000;
	/* TBOX_4G_Signal_Level: start-bit 8, length 8, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 8) & 0xff;
	unpack->TBOX_4G_Signal_Level = x * 1.000000 + 0.000000;
	/* TBOX_WIFIAP_Work_Status: start-bit 3, length 2, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 3) & 0x3;
	unpack->TBOX_WIFIAP_Work_Status = x * 1.000000 + 0.000000;
	/* TBOX_Ignition_Sts: start-bit 0, length 2, endianess intel, scaling 1.000000, offset 0.000000 */
	x = i & 0x3;
	unpack->TBOX_Ignition_Sts = x * 1.000000 + 0.000000;
	/* TBOX_ICAN_Data_Link_Status: start-bit 40, length 2, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 40) & 0x3;
	unpack->TBOX_ICAN_Data_Link_Status = x * 1.000000 + 0.000000;
	/* TBOX_BlueTooth_work_Status: start-bit 5, length 2, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 5) & 0x3;
	unpack->TBOX_BlueTooth_work_Status = x * 1.000000 + 0.000000;
	/* TBOX_General_Fail_Status: start-bit 2, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 2) & 0x1;
	unpack->TBOX_General_Fail_Status = x * 1.000000 + 0.000000;
	/* TBOX_ExtLamp_Controller_Status: start-bit 46, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 46) & 0x1;
	unpack->TBOX_ExtLamp_Controller_Status = x * 1.000000 + 0.000000;
	/* TBOX_Door_Controller_Status: start-bit 47, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 47) & 0x1;
	unpack->TBOX_Door_Controller_Status = x * 1.000000 + 0.000000;
	/* TBOX_Cloud_Mirror_Status: start-bit 44, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 44) & 0x1;
	unpack->TBOX_Cloud_Mirror_Status = x * 1.000000 + 0.000000;
	/* TBOX_Cameral_Controller_Status: start-bit 45, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 45) & 0x1;
	unpack->TBOX_Cameral_Controller_Status = x * 1.000000 + 0.000000;
	/* TBOX_AirCondition_Status: start-bit 42, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 42) & 0x1;
	unpack->TBOX_AirCondition_Status = x * 1.000000 + 0.000000;
	/* TBOX_AirCleaner_Status: start-bit 43, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 43) & 0x1;
	unpack->TBOX_AirCleaner_Status = x * 1.000000 + 0.000000;
	/* TBOX_4G_Work_Status: start-bit 7, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 7) & 0x1;
	unpack->TBOX_4G_Work_Status = x * 1.000000 + 0.000000;
	return 0;
}

int print_can_0x682_TBOX_Sts(can_0x682_TBOX_Sts_t *print, FILE *data)
{
	double scaled;
	int r = 0;
	scaled = 1.000;
	r = printf("TBOXI_Checksum = %.3f (wire: %.0f)\n", scaled, (double)(print->TBOXI_Checksum));
	scaled = 1.000;
	r = printf("TBOX_WIFI_Signal_Level = %.3f (wire: %.0f)\n", scaled, (double)(print->TBOX_WIFI_Signal_Level));
	scaled = 1.000;
	r = printf("TBOX_BlueTooth_Signal_Level = %.3f (wire: %.0f)\n", scaled, (double)(print->TBOX_BlueTooth_Signal_Level));
	scaled = 1.000;
	r = printf("TBOX_4G_Signal_Level = %.3f (wire: %.0f)\n", scaled, (double)(print->TBOX_4G_Signal_Level));
	scaled = 1.000;
	r = printf("TBOX_WIFIAP_Work_Status = %.3f (wire: %.0f)\n", scaled, (double)(print->TBOX_WIFIAP_Work_Status));
	scaled = 1.000;
	r = printf("TBOX_Ignition_Sts = %.3f (wire: %.0f)\n", scaled, (double)(print->TBOX_Ignition_Sts));
	scaled = 1.000;
	r = printf("TBOX_ICAN_Data_Link_Status = %.3f (wire: %.0f)\n", scaled, (double)(print->TBOX_ICAN_Data_Link_Status));
	scaled = 1.000;
	r = printf("TBOX_BlueTooth_work_Status = %.3f (wire: %.0f)\n", scaled, (double)(print->TBOX_BlueTooth_work_Status));
	scaled = 1.000;
	r = printf("TBOX_General_Fail_Status = %.3f (wire: %.0f)\n", scaled, (double)(print->TBOX_General_Fail_Status));
	scaled = 1.000;
	r = printf("TBOX_ExtLamp_Controller_Status = %.3f (wire: %.0f)\n", scaled, (double)(print->TBOX_ExtLamp_Controller_Status));
	scaled = 1.000;
	r = printf("TBOX_Door_Controller_Status = %.3f (wire: %.0f)\n", scaled, (double)(print->TBOX_Door_Controller_Status));
	scaled = 1.000;
	r = printf("TBOX_Cloud_Mirror_Status = %.3f (wire: %.0f)\n", scaled, (double)(print->TBOX_Cloud_Mirror_Status));
	scaled = 1.000;
	r = printf("TBOX_Cameral_Controller_Status = %.3f (wire: %.0f)\n", scaled, (double)(print->TBOX_Cameral_Controller_Status));
	scaled = 1.000;
	r = printf("TBOX_AirCondition_Status = %.3f (wire: %.0f)\n", scaled, (double)(print->TBOX_AirCondition_Status));
	scaled = 1.000;
	r = printf("TBOX_AirCleaner_Status = %.3f (wire: %.0f)\n", scaled, (double)(print->TBOX_AirCleaner_Status));
	scaled = 1.000;
	r = printf("TBOX_4G_Work_Status = %.3f (wire: %.0f)\n", scaled, (double)(print->TBOX_4G_Work_Status));
	return r;
}

can_0x685_GPS_Sts_1_t can_0x685_GPS_Sts_1_data;

int pack_can_0x685_GPS_Sts_1(can_0x685_GPS_Sts_1_t *pack, uint64_t *data)
{
	register uint64_t x;
	register uint64_t i = 0;
	/* GPS_Speed: start-bit 8, length 16, endianess intel, scaling 0.100000, offset 0.000000 */
	x = ((uint16_t)rt_roundd_snf((pack->GPS_Speed + 0.000000) / 0.100000)) & 0xffff;
	x <<= 8;
	i |= x;
	/* GPS_Direction: start-bit 24, length 16, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint16_t)rt_roundd_snf((pack->GPS_Direction + 0.000000) / 1.000000)) & 0xffff;
	x <<= 24;
	i |= x;
	/* GPS_Num_Of_Satellite: start-bit 40, length 8, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->GPS_Num_Of_Satellite + 0.000000) / 1.000000)) & 0xff;
	x <<= 40;
	i |= x;
	/* GPS_Checksum: start-bit 56, length 8, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->GPS_Checksum + 0.000000) / 1.000000)) & 0xff;
	x <<= 56;
	i |= x;
	/* GPS_Northern_or_Southern: start-bit 1, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->GPS_Northern_or_Southern + 0.000000) / 1.000000)) & 0x1;
	x <<= 1;
	i |= x;
	/* GPS_Location_Sts: start-bit 0, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->GPS_Location_Sts + 0.000000) / 1.000000)) & 0x1;
	i |= x;
	/* GPS_East_or_West: start-bit 2, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->GPS_East_or_West + 0.000000) / 1.000000)) & 0x1;
	x <<= 2;
	i |= x;
	*data = (i);
	return 0;
}

int unpack_can_0x685_GPS_Sts_1(can_0x685_GPS_Sts_1_t *unpack, uint64_t data, uint8_t dlc)
{
	register uint64_t x;
	register uint64_t i = (data);
	if (dlc < 8)
		return -1;
	/* GPS_Speed: start-bit 8, length 16, endianess intel, scaling 0.100000, offset 0.000000 */
	x = (i >> 8) & 0xffff;
	unpack->GPS_Speed = x * 0.100000 + 0.000000;
	/* GPS_Direction: start-bit 24, length 16, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 24) & 0xffff;
	unpack->GPS_Direction = x * 1.000000 + 0.000000;
	/* GPS_Num_Of_Satellite: start-bit 40, length 8, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 40) & 0xff;
	unpack->GPS_Num_Of_Satellite = x * 1.000000 + 0.000000;
	/* GPS_Checksum: start-bit 56, length 8, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 56) & 0xff;
	unpack->GPS_Checksum = x * 1.000000 + 0.000000;
	/* GPS_Northern_or_Southern: start-bit 1, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 1) & 0x1;
	unpack->GPS_Northern_or_Southern = x * 1.000000 + 0.000000;
	/* GPS_Location_Sts: start-bit 0, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = i & 0x1;
	unpack->GPS_Location_Sts = x * 1.000000 + 0.000000;
	/* GPS_East_or_West: start-bit 2, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 2) & 0x1;
	unpack->GPS_East_or_West = x * 1.000000 + 0.000000;
	return 0;
}

int print_can_0x685_GPS_Sts_1(can_0x685_GPS_Sts_1_t *print, FILE *data)
{
	double scaled;
	int r = 0;
	scaled = 0.100;
	r = printf("GPS_Speed = %.3f (wire: %.0f)\n", scaled, (double)(print->GPS_Speed));
	scaled = 1.000;
	r = printf("GPS_Direction = %.3f (wire: %.0f)\n", scaled, (double)(print->GPS_Direction));
	scaled = 1.000;
	r = printf("GPS_Num_Of_Satellite = %.3f (wire: %.0f)\n", scaled, (double)(print->GPS_Num_Of_Satellite));
	scaled = 1.000;
	r = printf("GPS_Checksum = %.3f (wire: %.0f)\n", scaled, (double)(print->GPS_Checksum));
	scaled = 1.000;
	r = printf("GPS_Northern_or_Southern = %.3f (wire: %.0f)\n", scaled, (double)(print->GPS_Northern_or_Southern));
	scaled = 1.000;
	r = printf("GPS_Location_Sts = %.3f (wire: %.0f)\n", scaled, (double)(print->GPS_Location_Sts));
	scaled = 1.000;
	r = printf("GPS_East_or_West = %.3f (wire: %.0f)\n", scaled, (double)(print->GPS_East_or_West));
	return r;
}

can_0x686_GPS_Sts_2_t can_0x686_GPS_Sts_2_data;

int pack_can_0x686_GPS_Sts_2(can_0x686_GPS_Sts_2_t *pack, uint64_t *data)
{
	register uint64_t x;
	register uint64_t i = 0;
	/* GPS_Longitude: start-bit 0, length 32, endianess intel, scaling 0.000000, offset 0.000000 */
	x = ((uint32_t)rt_roundd_snf((pack->GPS_Longitude + 0.000000) / 0.000000)) & 0xffffffff;
	i |= x;
	/* GPS_Latitude: start-bit 32, length 32, endianess intel, scaling 0.000000, offset 0.000000 */
	x = ((uint32_t)rt_roundd_snf((pack->GPS_Latitude + 0.000000) / 0.000000)) & 0xffffffff;
	x <<= 32;
	i |= x;
	*data = (i);
	return 0;
}

int unpack_can_0x686_GPS_Sts_2(can_0x686_GPS_Sts_2_t *unpack, uint64_t data, uint8_t dlc)
{
	register uint64_t x;
	register uint64_t i = (data);
	if (dlc < 8)
		return -1;
	/* GPS_Longitude: start-bit 0, length 32, endianess intel, scaling 0.000000, offset 0.000000 */
	x = i & 0xffffffff;
	unpack->GPS_Longitude = x * 0.000000 + 0.000000;
	/* GPS_Latitude: start-bit 32, length 32, endianess intel, scaling 0.000000, offset 0.000000 */
	x = (i >> 32) & 0xffffffff;
	unpack->GPS_Latitude = x * 0.000000 + 0.000000;
	return 0;
}

int print_can_0x686_GPS_Sts_2(can_0x686_GPS_Sts_2_t *print, FILE *data)
{
	double scaled;
	int r = 0;
	scaled = 0.000;
	r = printf("GPS_Longitude = %.3f (wire: %.0f)\n", scaled, (double)(print->GPS_Longitude));
	scaled = 0.000;
	r = printf("GPS_Latitude = %.3f (wire: %.0f)\n", scaled, (double)(print->GPS_Latitude));
	return r;
}

can_0x701_Hardware_inpute_t can_0x701_Hardware_inpute_data;

int pack_can_0x701_Hardware_inpute(can_0x701_Hardware_inpute_t *pack, uint64_t *data)
{
	register uint64_t x;
	register uint64_t i = 0;
	/* HarwareTargetSpd: start-bit 52, length 10, endianess intel, scaling 0.100000, offset 0.000000 */
	x = ((uint16_t)rt_roundd_snf((pack->HarwareTargetSpd + 0.000000) / 0.100000)) & 0x3ff;
	x <<= 52;
	i |= x;
	/* SCU_Target_Speed: start-bit 42, length 10, endianess intel, scaling 0.100000, offset 0.000000 */
	x = ((uint16_t)rt_roundd_snf((pack->SCU_Target_Speed + 0.000000) / 0.100000)) & 0x3ff;
	x <<= 42;
	i |= x;
	/* GW_Target_Speed: start-bit 32, length 10, endianess intel, scaling 0.100000, offset 0.000000 */
	x = ((uint16_t)rt_roundd_snf((pack->GW_Target_Speed + 0.000000) / 0.100000)) & 0x3ff;
	x <<= 32;
	i |= x;
	/* hardware_input_Analog_Weight_V: start-bit 8, length 8, endianess intel, scaling 0.010000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->hardware_input_Analog_Weight_V + 0.000000) / 0.010000)) & 0xff;
	x <<= 8;
	i |= x;
	/* HarwareGearCmd: start-bit 20, length 4, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->HarwareGearCmd + 0.000000) / 1.000000)) & 0xf;
	x <<= 20;
	i |= x;
	/* DrvModFlag: start-bit 24, length 4, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->DrvModFlag + 0.000000) / 1.000000)) & 0xf;
	x <<= 24;
	i |= x;
	/* gearcmd: start-bit 28, length 4, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->gearcmd + 0.000000) / 1.000000)) & 0xf;
	x <<= 28;
	i |= x;
	/* hardware_Foot_brake_input: start-bit 7, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->hardware_Foot_brake_input + 0.000000) / 1.000000)) & 0x1;
	x <<= 7;
	i |= x;
	/* hardware_input_Dec: start-bit 6, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->hardware_input_Dec + 0.000000) / 1.000000)) & 0x1;
	x <<= 6;
	i |= x;
	/* hardware_input_Acc: start-bit 5, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->hardware_input_Acc + 0.000000) / 1.000000)) & 0x1;
	x <<= 5;
	i |= x;
	/* hardware_input_ignition: start-bit 0, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->hardware_input_ignition + 0.000000) / 1.000000)) & 0x1;
	i |= x;
	/* hardware_input_KeyOn: start-bit 1, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->hardware_input_KeyOn + 0.000000) / 1.000000)) & 0x1;
	x <<= 1;
	i |= x;
	/* hardware_input_R: start-bit 4, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->hardware_input_R + 0.000000) / 1.000000)) & 0x1;
	x <<= 4;
	i |= x;
	/* hardware_input_N: start-bit 3, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->hardware_input_N + 0.000000) / 1.000000)) & 0x1;
	x <<= 3;
	i |= x;
	/* hardware_input_D: start-bit 2, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->hardware_input_D + 0.000000) / 1.000000)) & 0x1;
	x <<= 2;
	i |= x;
	*data = (i);
	return 0;
}

int unpack_can_0x701_Hardware_inpute(can_0x701_Hardware_inpute_t *unpack, uint64_t data, uint8_t dlc)
{
	register uint64_t x;
	register uint64_t i = (data);
	if (dlc < 8)
		return -1;
	/* HarwareTargetSpd: start-bit 52, length 10, endianess intel, scaling 0.100000, offset 0.000000 */
	x = (i >> 52) & 0x3ff;
	unpack->HarwareTargetSpd = (x & 0x200 ? -(0x3ff - (uint16_t)x + 1) : (uint16_t)x) * 0.100000 + 0.000000;
	/* SCU_Target_Speed: start-bit 42, length 10, endianess intel, scaling 0.100000, offset 0.000000 */
	x = (i >> 42) & 0x3ff;
	unpack->SCU_Target_Speed = (x & 0x200 ? -(0x3ff - (uint16_t)x + 1) : (uint16_t)x) * 0.100000 + 0.000000;
	/* GW_Target_Speed: start-bit 32, length 10, endianess intel, scaling 0.100000, offset 0.000000 */
	x = (i >> 32) & 0x3ff;
	unpack->GW_Target_Speed = (x & 0x200 ? -(0x3ff - (uint16_t)x + 1) : (uint16_t)x) * 0.100000 + 0.000000;
	/* hardware_input_Analog_Weight_V: start-bit 8, length 8, endianess intel, scaling 0.010000, offset 0.000000 */
	x = (i >> 8) & 0xff;
	/* HarwareGearCmd: start-bit 20, length 4, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 20) & 0xf;
	unpack->HarwareGearCmd = x * 1.000000 + 0.000000;
	/* DrvModFlag: start-bit 24, length 4, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 24) & 0xf;
	unpack->DrvModFlag = x * 1.000000 + 0.000000;
	/* gearcmd: start-bit 28, length 4, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 28) & 0xf;
	unpack->gearcmd = x * 1.000000 + 0.000000;
	/* hardware_Foot_brake_input: start-bit 7, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 7) & 0x1;
	unpack->hardware_Foot_brake_input = x * 1.000000 + 0.000000;
	/* hardware_input_Dec: start-bit 6, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 6) & 0x1;
	unpack->hardware_input_Dec = x * 1.000000 + 0.000000;
	/* hardware_input_Acc: start-bit 5, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 5) & 0x1;
	unpack->hardware_input_Acc = x * 1.000000 + 0.000000;
	/* hardware_input_ignition: start-bit 0, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = i & 0x1;
	unpack->hardware_input_ignition = x * 1.000000 + 0.000000;
	/* hardware_input_KeyOn: start-bit 1, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 1) & 0x1;
	unpack->hardware_input_KeyOn = x * 1.000000 + 0.000000;
	/* hardware_input_R: start-bit 4, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 4) & 0x1;
	unpack->hardware_input_R = x * 1.000000 + 0.000000;
	/* hardware_input_N: start-bit 3, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 3) & 0x1;
	unpack->hardware_input_N = x * 1.000000 + 0.000000;
	/* hardware_input_D: start-bit 2, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 2) & 0x1;
	unpack->hardware_input_D = x * 1.000000 + 0.000000;
	return 0;
}

int print_can_0x701_Hardware_inpute(can_0x701_Hardware_inpute_t *print, FILE *data)
{
	double scaled;
	int r = 0;
	scaled = 0.100;
	r = printf("HarwareTargetSpd = %.3f (wire: %.0f)\n", scaled, (double)(print->HarwareTargetSpd));
	scaled = 0.100;
	r = printf("SCU_Target_Speed = %.3f (wire: %.0f)\n", scaled, (double)(print->SCU_Target_Speed));
	scaled = 0.100;
	r = printf("GW_Target_Speed = %.3f (wire: %.0f)\n", scaled, (double)(print->GW_Target_Speed));
	scaled = 0.010;
	r = printf("hardware_input_Analog_Weight_V = %.3f (wire: %.0f)\n", scaled, (double)(print->hardware_input_Analog_Weight_V));
	scaled = 1.000;
	r = printf("HarwareGearCmd = %.3f (wire: %.0f)\n", scaled, (double)(print->HarwareGearCmd));
	scaled = 1.000;
	r = printf("DrvModFlag = %.3f (wire: %.0f)\n", scaled, (double)(print->DrvModFlag));
	scaled = 1.000;
	r = printf("gearcmd = %.3f (wire: %.0f)\n", scaled, (double)(print->gearcmd));
	scaled = 1.000;
	r = printf("hardware_Foot_brake_input = %.3f (wire: %.0f)\n", scaled, (double)(print->hardware_Foot_brake_input));
	scaled = 1.000;
	r = printf("hardware_input_Dec = %.3f (wire: %.0f)\n", scaled, (double)(print->hardware_input_Dec));
	scaled = 1.000;
	r = printf("hardware_input_Acc = %.3f (wire: %.0f)\n", scaled, (double)(print->hardware_input_Acc));
	scaled = 1.000;
	r = printf("hardware_input_ignition = %.3f (wire: %.0f)\n", scaled, (double)(print->hardware_input_ignition));
	scaled = 1.000;
	r = printf("hardware_input_KeyOn = %.3f (wire: %.0f)\n", scaled, (double)(print->hardware_input_KeyOn));
	scaled = 1.000;
	r = printf("hardware_input_R = %.3f (wire: %.0f)\n", scaled, (double)(print->hardware_input_R));
	scaled = 1.000;
	r = printf("hardware_input_N = %.3f (wire: %.0f)\n", scaled, (double)(print->hardware_input_N));
	scaled = 1.000;
	r = printf("hardware_input_D = %.3f (wire: %.0f)\n", scaled, (double)(print->hardware_input_D));
	return r;
}

can_0x710_DebugEn_t can_0x710_DebugEn_data;

int pack_can_0x710_DebugEn(can_0x710_DebugEn_t *pack, uint64_t *data)
{
	register uint64_t x;
	register uint64_t i = 0;
	/* PIDDebugEn: start-bit 2, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->PIDDebugEn + 0.000000) / 1.000000)) & 0x1;
	x <<= 2;
	i |= x;
	/* SASDebugEn: start-bit 6, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->SASDebugEn + 0.000000) / 1.000000)) & 0x1;
	x <<= 6;
	i |= x;
	/* ChrgerDebugEn: start-bit 7, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->ChrgerDebugEn + 0.000000) / 1.000000)) & 0x1;
	x <<= 7;
	i |= x;
	/* HalLedCmd: start-bit 11, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->HalLedCmd + 0.000000) / 1.000000)) & 0x1;
	x <<= 11;
	i |= x;
	/* FaultResetCmd: start-bit 8, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->FaultResetCmd + 0.000000) / 1.000000)) & 0x1;
	x <<= 8;
	i |= x;
	/* LightDebugEn: start-bit 5, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->LightDebugEn + 0.000000) / 1.000000)) & 0x1;
	x <<= 5;
	i |= x;
	/* ASDebugEn: start-bit 4, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->ASDebugEn + 0.000000) / 1.000000)) & 0x1;
	x <<= 4;
	i |= x;
	/* VelDebugEn: start-bit 1, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->VelDebugEn + 0.000000) / 1.000000)) & 0x1;
	x <<= 1;
	i |= x;
	/* TqDebugEn: start-bit 3, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->TqDebugEn + 0.000000) / 1.000000)) & 0x1;
	x <<= 3;
	i |= x;
	/* RTLedCmd: start-bit 10, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->RTLedCmd + 0.000000) / 1.000000)) & 0x1;
	x <<= 10;
	i |= x;
	/* RFLedCmd: start-bit 15, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->RFLedCmd + 0.000000) / 1.000000)) & 0x1;
	x <<= 15;
	i |= x;
	/* PosLedCmd: start-bit 12, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->PosLedCmd + 0.000000) / 1.000000)) & 0x1;
	x <<= 12;
	i |= x;
	/* LTLedCmd: start-bit 9, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->LTLedCmd + 0.000000) / 1.000000)) & 0x1;
	x <<= 9;
	i |= x;
	/* LBLedCmd: start-bit 13, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->LBLedCmd + 0.000000) / 1.000000)) & 0x1;
	x <<= 13;
	i |= x;
	/* HornCmd: start-bit 16, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->HornCmd + 0.000000) / 1.000000)) & 0x1;
	x <<= 16;
	i |= x;
	/* HBLedCmd: start-bit 14, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->HBLedCmd + 0.000000) / 1.000000)) & 0x1;
	x <<= 14;
	i |= x;
	/* BMSDebugEn: start-bit 0, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->BMSDebugEn + 0.000000) / 1.000000)) & 0x1;
	i |= x;
	*data = (i);
	return 0;
}

int unpack_can_0x710_DebugEn(can_0x710_DebugEn_t *unpack, uint64_t data, uint8_t dlc)
{
	register uint64_t x;
	register uint64_t i = (data);
	if (dlc < 8)
		return -1;
	/* PIDDebugEn: start-bit 2, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 2) & 0x1;
	unpack->PIDDebugEn = x * 1.000000 + 0.000000;
	/* SASDebugEn: start-bit 6, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 6) & 0x1;
	unpack->SASDebugEn = x * 1.000000 + 0.000000;
	/* ChrgerDebugEn: start-bit 7, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 7) & 0x1;
	unpack->ChrgerDebugEn = x * 1.000000 + 0.000000;
	/* HalLedCmd: start-bit 11, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 11) & 0x1;
	unpack->HalLedCmd = x * 1.000000 + 0.000000;
	/* FaultResetCmd: start-bit 8, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 8) & 0x1;
	unpack->FaultResetCmd = x * 1.000000 + 0.000000;
	/* LightDebugEn: start-bit 5, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 5) & 0x1;
	unpack->LightDebugEn = x * 1.000000 + 0.000000;
	/* ASDebugEn: start-bit 4, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 4) & 0x1;
	unpack->ASDebugEn = x * 1.000000 + 0.000000;
	/* VelDebugEn: start-bit 1, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 1) & 0x1;
	unpack->VelDebugEn = x * 1.000000 + 0.000000;
	/* TqDebugEn: start-bit 3, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 3) & 0x1;
	unpack->TqDebugEn = x * 1.000000 + 0.000000;
	/* RTLedCmd: start-bit 10, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 10) & 0x1;
	unpack->RTLedCmd = x * 1.000000 + 0.000000;
	/* RFLedCmd: start-bit 15, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 15) & 0x1;
	unpack->RFLedCmd = x * 1.000000 + 0.000000;
	/* PosLedCmd: start-bit 12, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 12) & 0x1;
	unpack->PosLedCmd = x * 1.000000 + 0.000000;
	/* LTLedCmd: start-bit 9, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 9) & 0x1;
	unpack->LTLedCmd = x * 1.000000 + 0.000000;
	/* LBLedCmd: start-bit 13, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 13) & 0x1;
	unpack->LBLedCmd = x * 1.000000 + 0.000000;
	/* HornCmd: start-bit 16, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 16) & 0x1;
	unpack->HornCmd = x * 1.000000 + 0.000000;
	/* HBLedCmd: start-bit 14, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 14) & 0x1;
	unpack->HBLedCmd = x * 1.000000 + 0.000000;
	/* BMSDebugEn: start-bit 0, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = i & 0x1;
	unpack->BMSDebugEn = x * 1.000000 + 0.000000;
	return 0;
}

int print_can_0x710_DebugEn(can_0x710_DebugEn_t *print, FILE *data)
{
	double scaled;
	int r = 0;
	scaled = 1.000;
	r = printf("PIDDebugEn = %.3f (wire: %.0f)\n", scaled, (double)(print->PIDDebugEn));
	scaled = 1.000;
	r = printf("SASDebugEn = %.3f (wire: %.0f)\n", scaled, (double)(print->SASDebugEn));
	scaled = 1.000;
	r = printf("ChrgerDebugEn = %.3f (wire: %.0f)\n", scaled, (double)(print->ChrgerDebugEn));
	scaled = 1.000;
	r = printf("HalLedCmd = %.3f (wire: %.0f)\n", scaled, (double)(print->HalLedCmd));
	scaled = 1.000;
	r = printf("FaultResetCmd = %.3f (wire: %.0f)\n", scaled, (double)(print->FaultResetCmd));
	scaled = 1.000;
	r = printf("LightDebugEn = %.3f (wire: %.0f)\n", scaled, (double)(print->LightDebugEn));
	scaled = 1.000;
	r = printf("ASDebugEn = %.3f (wire: %.0f)\n", scaled, (double)(print->ASDebugEn));
	scaled = 1.000;
	r = printf("VelDebugEn = %.3f (wire: %.0f)\n", scaled, (double)(print->VelDebugEn));
	scaled = 1.000;
	r = printf("TqDebugEn = %.3f (wire: %.0f)\n", scaled, (double)(print->TqDebugEn));
	scaled = 1.000;
	r = printf("RTLedCmd = %.3f (wire: %.0f)\n", scaled, (double)(print->RTLedCmd));
	scaled = 1.000;
	r = printf("RFLedCmd = %.3f (wire: %.0f)\n", scaled, (double)(print->RFLedCmd));
	scaled = 1.000;
	r = printf("PosLedCmd = %.3f (wire: %.0f)\n", scaled, (double)(print->PosLedCmd));
	scaled = 1.000;
	r = printf("LTLedCmd = %.3f (wire: %.0f)\n", scaled, (double)(print->LTLedCmd));
	scaled = 1.000;
	r = printf("LBLedCmd = %.3f (wire: %.0f)\n", scaled, (double)(print->LBLedCmd));
	scaled = 1.000;
	r = printf("HornCmd = %.3f (wire: %.0f)\n", scaled, (double)(print->HornCmd));
	scaled = 1.000;
	r = printf("HBLedCmd = %.3f (wire: %.0f)\n", scaled, (double)(print->HBLedCmd));
	scaled = 1.000;
	r = printf("BMSDebugEn = %.3f (wire: %.0f)\n", scaled, (double)(print->BMSDebugEn));
	return r;
}

can_0x712_ChrgASDebug_t can_0x712_ChrgASDebug_data;

int pack_can_0x712_ChrgASDebug(can_0x712_ChrgASDebug_t *pack, uint64_t *data)
{
	register uint64_t x;
	register uint64_t i = 0;
	/* ASRRHtCmd: start-bit 53, length 10, endianess intel, scaling 0.100000, offset 0.000000 */
	x = ((uint16_t)rt_roundd_snf((pack->ASRRHtCmd + 0.000000) / 0.100000)) & 0x3ff;
	x <<= 53;
	i |= x;
	/* ASRLHtCmd: start-bit 43, length 10, endianess intel, scaling 0.100000, offset 0.000000 */
	x = ((uint16_t)rt_roundd_snf((pack->ASRLHtCmd + 0.000000) / 0.100000)) & 0x3ff;
	x <<= 43;
	i |= x;
	/* ASFRHtCmd: start-bit 33, length 10, endianess intel, scaling 0.100000, offset 0.000000 */
	x = ((uint16_t)rt_roundd_snf((pack->ASFRHtCmd + 0.000000) / 0.100000)) & 0x3ff;
	x <<= 33;
	i |= x;
	/* ASFLHtCmd: start-bit 23, length 10, endianess intel, scaling 0.100000, offset 0.000000 */
	x = ((uint16_t)rt_roundd_snf((pack->ASFLHtCmd + 0.000000) / 0.100000)) & 0x3ff;
	x <<= 23;
	i |= x;
	/* ChrgVolCmd: start-bit 3, length 10, endianess intel, scaling 0.100000, offset 0.000000 */
	x = ((uint16_t)rt_roundd_snf((pack->ChrgVolCmd + 0.000000) / 0.100000)) & 0x3ff;
	x <<= 3;
	i |= x;
	/* ChrgCurCmd: start-bit 13, length 10, endianess intel, scaling 0.100000, offset 0.000000 */
	x = ((uint16_t)rt_roundd_snf((pack->ChrgCurCmd + 0.000000) / 0.100000)) & 0x3ff;
	x <<= 13;
	i |= x;
	/* ChrgEnCmd: start-bit 2, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->ChrgEnCmd + 0.000000) / 1.000000)) & 0x1;
	x <<= 2;
	i |= x;
	/* MainRelayClsCmd: start-bit 1, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->MainRelayClsCmd + 0.000000) / 1.000000)) & 0x1;
	x <<= 1;
	i |= x;
	/* PreRelayClsCmd: start-bit 0, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint8_t)rt_roundd_snf((pack->PreRelayClsCmd + 0.000000) / 1.000000)) & 0x1;
	i |= x;
	*data = (i);
	return 0;
}

int unpack_can_0x712_ChrgASDebug(can_0x712_ChrgASDebug_t *unpack, uint64_t data, uint8_t dlc)
{
	register uint64_t x;
	register uint64_t i = (data);
	if (dlc < 8)
		return -1;
	/* ASRRHtCmd: start-bit 53, length 10, endianess intel, scaling 0.100000, offset 0.000000 */
	x = (i >> 53) & 0x3ff;
	unpack->ASRRHtCmd = x * 0.100000 + 0.000000;
	/* ASRLHtCmd: start-bit 43, length 10, endianess intel, scaling 0.100000, offset 0.000000 */
	x = (i >> 43) & 0x3ff;
	unpack->ASRLHtCmd = x * 0.100000 + 0.000000;
	/* ASFRHtCmd: start-bit 33, length 10, endianess intel, scaling 0.100000, offset 0.000000 */
	x = (i >> 33) & 0x3ff;
	unpack->ASFRHtCmd = x * 0.100000 + 0.000000;
	/* ASFLHtCmd: start-bit 23, length 10, endianess intel, scaling 0.100000, offset 0.000000 */
	x = (i >> 23) & 0x3ff;
	unpack->ASFLHtCmd = x * 0.100000 + 0.000000;
	/* ChrgVolCmd: start-bit 3, length 10, endianess intel, scaling 0.100000, offset 0.000000 */
	x = (i >> 3) & 0x3ff;
	unpack->ChrgVolCmd = x * 0.100000 + 0.000000;
	/* ChrgCurCmd: start-bit 13, length 10, endianess intel, scaling 0.100000, offset 0.000000 */
	x = (i >> 13) & 0x3ff;
	unpack->ChrgCurCmd = x * 0.100000 + 0.000000;
	/* ChrgEnCmd: start-bit 2, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 2) & 0x1;
	unpack->ChrgEnCmd = x * 1.000000 + 0.000000;
	/* MainRelayClsCmd: start-bit 1, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 1) & 0x1;
	unpack->MainRelayClsCmd = x * 1.000000 + 0.000000;
	/* PreRelayClsCmd: start-bit 0, length 1, endianess intel, scaling 1.000000, offset 0.000000 */
	x = i & 0x1;
	unpack->PreRelayClsCmd = x * 1.000000 + 0.000000;
	return 0;
}

int print_can_0x712_ChrgASDebug(can_0x712_ChrgASDebug_t *print, FILE *data)
{
	double scaled;
	int r = 0;
	scaled = 0.100;
	r = printf("ASRRHtCmd = %.3f (wire: %.0f)\n", scaled, (double)(print->ASRRHtCmd));
	scaled = 0.100;
	r = printf("ASRLHtCmd = %.3f (wire: %.0f)\n", scaled, (double)(print->ASRLHtCmd));
	scaled = 0.100;
	r = printf("ASFRHtCmd = %.3f (wire: %.0f)\n", scaled, (double)(print->ASFRHtCmd));
	scaled = 0.100;
	r = printf("ASFLHtCmd = %.3f (wire: %.0f)\n", scaled, (double)(print->ASFLHtCmd));
	scaled = 0.100;
	r = printf("ChrgVolCmd = %.3f (wire: %.0f)\n", scaled, (double)(print->ChrgVolCmd));
	scaled = 0.100;
	r = printf("ChrgCurCmd = %.3f (wire: %.0f)\n", scaled, (double)(print->ChrgCurCmd));
	scaled = 1.000;
	r = printf("ChrgEnCmd = %.3f (wire: %.0f)\n", scaled, (double)(print->ChrgEnCmd));
	scaled = 1.000;
	r = printf("MainRelayClsCmd = %.3f (wire: %.0f)\n", scaled, (double)(print->MainRelayClsCmd));
	scaled = 1.000;
	r = printf("PreRelayClsCmd = %.3f (wire: %.0f)\n", scaled, (double)(print->PreRelayClsCmd));
	return r;
}

can_0x715_DrvDebug_t can_0x715_DrvDebug_data;

int pack_can_0x715_DrvDebug(can_0x715_DrvDebug_t *pack, uint64_t *data)
{
	register uint64_t x;
	register uint64_t i = 0;
	/* SASCmd: start-bit 20, length 12, endianess intel, scaling 0.100000, offset 0.000000 */
	x = ((uint16_t)rt_roundd_snf((pack->SASCmd + 0.000000) / 0.100000)) & 0xfff;
	x <<= 20;
	i |= x;
	/* VelKp: start-bit 34, length 10, endianess intel, scaling 0.100000, offset 0.000000 */
	x = ((uint16_t)rt_roundd_snf((pack->VelKp + 0.000000) / 0.100000)) & 0x3ff;
	x <<= 34;
	i |= x;
	/* VelKi: start-bit 44, length 10, endianess intel, scaling 0.010000, offset 0.000000 */
	x = ((uint16_t)rt_roundd_snf((pack->VelKi + 0.000000) / 0.010000)) & 0x3ff;
	x <<= 44;
	i |= x;
	/* VelKd: start-bit 54, length 10, endianess intel, scaling 0.010000, offset 0.000000 */
	x = ((uint16_t)rt_roundd_snf((pack->VelKd + 0.000000) / 0.010000)) & 0x3ff;
	x <<= 54;
	i |= x;
	/* VelCmd: start-bit 0, length 10, endianess intel, scaling 0.100000, offset 0.000000 */
	x = ((uint16_t)rt_roundd_snf((pack->VelCmd + 0.000000) / 0.100000)) & 0x3ff;
	i |= x;
	/* TqCmd: start-bit 10, length 10, endianess intel, scaling 1.000000, offset 0.000000 */
	x = ((uint16_t)rt_roundd_snf((pack->TqCmd + 0.000000) / 1.000000)) & 0x3ff;
	x <<= 10;
	i |= x;
	*data = (i);
	return 0;
}

int unpack_can_0x715_DrvDebug(can_0x715_DrvDebug_t *unpack, uint64_t data, uint8_t dlc)
{
	register uint64_t x;
	register uint64_t i = (data);
	if (dlc < 8)
		return -1;
	/* SASCmd: start-bit 20, length 12, endianess intel, scaling 0.100000, offset 0.000000 */
	x = (i >> 20) & 0xfff;
	unpack->SASCmd = (x & 0x800 ? -(0xfff - (uint16_t)x + 1) : (uint16_t)x) * 0.100000 + 0.000000;
	/* VelKp: start-bit 34, length 10, endianess intel, scaling 0.100000, offset 0.000000 */
	x = (i >> 34) & 0x3ff;
	unpack->VelKp = x * 0.100000 + 0.000000;
	/* VelKi: start-bit 44, length 10, endianess intel, scaling 0.010000, offset 0.000000 */
	x = (i >> 44) & 0x3ff;
	unpack->VelKi = x * 0.010000 + 0.000000;
	/* VelKd: start-bit 54, length 10, endianess intel, scaling 0.010000, offset 0.000000 */
	x = (i >> 54) & 0x3ff;
	unpack->VelKd = x * 0.010000 + 0.000000;
	/* VelCmd: start-bit 0, length 10, endianess intel, scaling 0.100000, offset 0.000000 */
	x = i & 0x3ff;
	unpack->VelCmd = (x & 0x200 ? -(0x3ff - (uint16_t)x + 1) : (uint16_t)x) * 0.100000 + 0.000000;
	/* TqCmd: start-bit 10, length 10, endianess intel, scaling 1.000000, offset 0.000000 */
	x = (i >> 10) & 0x3ff;
	unpack->TqCmd = (x & 0x200 ? -(0x3ff - (uint16_t)x + 1) : (uint16_t)x) * 1.000000 + 0.000000;
	return 0;
}

int print_can_0x715_DrvDebug(can_0x715_DrvDebug_t *print, FILE *data)
{
	double scaled;
	int r = 0;
	scaled = 0.100;
	r = printf("SASCmd = %.3f (wire: %.0f)\n", scaled, (double)(print->SASCmd));
	scaled = 0.100;
	r = printf("VelKp = %.3f (wire: %.0f)\n", scaled, (double)(print->VelKp));
	scaled = 0.010;
	r = printf("VelKi = %.3f (wire: %.0f)\n", scaled, (double)(print->VelKi));
	scaled = 0.010;
	r = printf("VelKd = %.3f (wire: %.0f)\n", scaled, (double)(print->VelKd));
	scaled = 0.100;
	r = printf("VelCmd = %.3f (wire: %.0f)\n", scaled, (double)(print->VelCmd));
	scaled = 1.000;
	r = printf("TqCmd = %.3f (wire: %.0f)\n", scaled, (double)(print->TqCmd));
	return r;
}
